Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
¿Cómo consultar uniendo 2 documentos basados en _id en MongoDB?

Tengo un modelo de datos como esta imagen a continuación y todos ellos están en la misma colección, pero por supuesto son diferentes en la estructura de datos. Usé las referencias manuales en películas de documentos y estudios de documentos. Por ejemplo, como el siguiente código:

  • Para gente de documentos

    { "_id": 100600, "first_name": "Becka", "last_name": "Battson", "birth_day": "2001-10-03" }

  • Para películas de documentos

    { "_id": 1100, "título": "Tom y Jerry", "director_id": 100100, "release_year": 2018, "imdb": { "puntuación": 4,8, "votos": 100 }, "actores" : [ { "person_id": 100300, "as": "Tom" }, { "person_id": 100400, "as": "Jerry" }, { "person_id": 100500, "as": "Nibbles" } ] }

  • Para estudios de documentos:

    { "_id": 9991000, "nombre": "Walt Disney", "año de fundación": 1923, "películas": [ 1100, 1200 ], "sede central": { "dirección": "1375 E Buena Vista Dr", " ciudad": "Nueva York", "estado": "Nueva York", "país": "EE.UU." } }

Tengo algunas tareas que necesitan unirse entre 2 documentos para obtener datos. Por ejemplo, "Indica que las películas tienen el actor con el apellido "Battson" . Pero sé que MongoDB no admite unir documentos como unir 2 tablas en RDBMS.

Intenté usar este código a continuación en el shell de MongoDB, pero no tiene sentido. Creo que necesito obtener los valores de _id en la consulta de resultados, luego insertarlos en la matriz array_idActor para que se pueda ejecutar el segundo código:

 const array_idActor = db.getCollection('movies_subject').find({last_name: /Battson/}) db.getCollection('movies_subject').find({actors:{$elemMatch:{person_id:{$in:array_idActor}}}}).pretty()

Por favor, ayúdame a arreglar esto. Muchas gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

unir dos colecciones

 db.people.aggregate([ { "$match": { "last_name": "Battson" } }, { "$lookup": { "from": "movies", "localField": "_id", "foreignField": "actors.person_id", "as": "movie_docs" } } ])

parque infantil mongo


unir tres colecciones

 db.people.aggregate([ { "$match": { "last_name": "Battson" } }, { "$lookup": { "from": "movies", "let": { "people_id": "$_id" }, "pipeline": [ { "$match": { $expr: { "$in": [ "$$people_id", "$actors.person_id" ] } } }, { "$lookup": { "from": "studios", "localField": "_id", "foreignField": "movies", "as": "studio_docs" } } ], "as": "movie_docs" } } ])

parque infantil mongo


misma colección

 db.collection.aggregate([ { "$match": { "last_name": "Battson" } }, { "$lookup": { "from": "collection", "localField": "_id", "foreignField": "actors.person_id", "as": "movie_docs" } } ])

parque infantil mongo

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda