2012-07-16 22 views
6

Actualmente estoy evaluando mongodb para un proyecto que he comenzado, pero no puedo encontrar ninguna información sobre el equivalente de una vista SQL en mongodb. Lo que necesito, que proporciona una vista de SQL, es agrupar los datos de diferentes tablas (colecciones) en una sola colección.Vista SQL en mongodb

No quiero nada más que agrupar algunos documentos y etiquetarlos como un único documento. He aquí un ejemplo:

tengo los siguientes documentos: cc_address us_address billing_address shipping_address

Pero en mi solicitud, me gustaría ver a todos mis direcciones y poder gestionarlos de una sola documento.

En otros casos, sólo puede querer un par de campos de colecciones:

tengo los siguientes documentos: fb_contact twitter_contact google_contact reddit_contact

cada uno de estos documentos tienen campos que se alinean, como firstname lastname y email, pero también tienen campos que no se alinean. Me gustaría poder compilarlos en un solo documento que solo contenga los campos que se alinean.

Esto se puede lograr con Vistas en SQL correctas? ¿Puedo lograr este tipo de funcionalidad en MongoDb?

Respuesta

1

Las consultas de MongoDB nunca abarcan más de una sola colección, ya que no hay soporte para las uniones. Por lo tanto, si tiene datos relacionados que necesita disponibles en los resultados de una consulta, debe agregar esos datos relacionados a la colección que está consultando (es decir, desnormalizar sus datos) o realizar una consulta por separado de otra colección.

+1

¿Qué hay de DBRefs? – netcoder

+1

DBRefs son solo la forma formal de almacenar un '_id' extranjero en una colección que se puede seguir con una consulta separada para recuperarlo. – JohnnyHK

3

No hay "uniones" en MongoDB. Como dijo JonnyHK, puede enormizar sus datos o utilizar documentos integrados o realizar múltiples consultas

Sin embargo, también puede usar Map-Reduce.

o si está preparado para usar la rama de desarrollo, puede probar el nuevo aggregation framework aunque tal vez sea demasiado? Este nuevo marco estará en el próximo lanzamiento de 2.2, que está listo para producción a diferencia de 2.1.x.

Aquí está el SQL-Mongo chart también, que puede ser de alguna ayuda en su aprendizaje.

Actualización: en función de su reedición, no necesita Map-Reduce o el Framework de Agregación porque solo está consultando.

Básicamente está haciendo combinaciones, consultando múltiples documentos y fusionando los resultados. El lugar para hacer esto es dentro de su aplicación en el lado del cliente.

+0

Quizás estoy confundiendo mi propio problema aquí. Entiendo que las uniones no están en MongoDb, pero el caso de uso en el que estoy pensando no requiere necesariamente uniones (creo). He actualizado mi pregunta con un ejemplo de lo que quiero. – KenEucker

6

La pregunta ya es bastante antigua. Sin embargo, desde mongodb v3.2 puede usar $lookup para unir datos de diferentes colecciones siempre que las colecciones no sean nítidas. Desde mongodb v3.4 también puede create read-only views.

+0

¡Gracias por la actualización! – KenEucker