Publiqué esto en la lista de correo de CouchDB-Usuarios, pero pensé que podría ampliar mi red un poco más.Vistas de CouchDB: uniones y subconsultas
[enlaces destruidos debido a las nuevas reglas de spam de usuario de stackoverflow :-(]
Esperemos que uno de ustedes la gente inteligente puede ayudar (o al menos alguien puede definitivamente me diga lo que estoy tratando de hacer es imposible, y voy a tengo que mirar en alternativas ... he oído MySQL está en la captación. (-:) información
Antecedentes: he creado una base de datos de ejemplo aquí: scoates-test.couchone.com /_utils/database.html?follow /scoates-test.couchone.com/follow
Tengo dos tipos de documentos. tipo = usuario y tipo = activo.
Ejemplo usuario: scoates-test.couchone.com/_utils/document.html?follow/c988a29740241c7d20fc7974be05f67d
Ejemplo activo: scoates-test.couchone.com/_utils/document.html?follow/c988a29740241c7d20fc7974be061d62
Los usuarios pueden seguir a otros usuarios (el tipo = campo "siguiente" del documento de usuario). El ejemplo usuario anterior (nombre de usuario = bob) es "siguientes" 2 usuarios:
"following": [
"c988a29740241c7d20fc7974be05ec54", // username=aaron
"c988a29740241c7d20fc7974be060bb4" // username=dale
]
activos son propiedad de un usuario específico. El activo de ejemplo anterior es propiedad de c988a29740241c7d20fc7974be061d62 (username = bob).
Espero que tenga sentido.
Me gustaría solicitar recursos que pertenezcan a los usuarios que bob está siguiendo (aaron y dale), y No puedo poner el dedo en el código de vista que lo permita. Puedo emitir fácilmente todos los activos que pertenecen a c988a29740241c7d20fc7974be05f67d.
I podría hacerlo en dos solicitudes. En primer lugar, le preguntaría a CouchDB por c988a29740241c7d20fc7974be05f67d, y luego escriba lo siguiente como "claves" de una vista que devuelve activos que pertenecen a esas claves, pero notará que mis documentos type = asset también tienen un campo "when" , y quiero poder ordenarlo al emitir [doc.owner, doc.when] como la clave, y luego usar startKey/endKey. Así que el POST de llaves está fuera, creo.
que podría simplemente se unen en el lado de la aplicación (consultar las siguientes teclas, hacer una solicitud de cada una de estas teclas, a continuación, ordenar en el lado de la aplicación), pero esto rompe la paginación realmente mal (yo necesidad solicitar un límite de pageSize para cada siguiente), y eso se sale de control muy rápidamente (si un usuario está siguiendo a 1000 usuarios, eso es 10,000 registros por página).
Ninguna de estas soluciones funciona para mí. Me gustaría hacerlo en CouchDB.
Estoy realmente perplejo. Por favor ayuda.
S
Gracias por la respuesta, voy a pensar en esto. Si satisface mis necesidades, regresaré y acepto su respuesta. Si no, volveré y haré algunas preguntas de seguimiento (-: – scoates
¡Gracias! Esto funciona. Realmente aprecio que se tome el tiempo de darme una buena solución. – scoates
Sería maravilloso si pudiera echar un vistazo en mi pregunta de seguimiento, también. ¡Gracias! http://stackoverflow.com/questions/4298937/couchdb-views-remove-duplicates-and-order-by-time – scoates