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

121
Vistas
Obtenga registros que no existen en la colección en una matriz dada - mongodb

Tengo una serie de identificaciones de estudiantes.

Quiero obtener esos registros que no se encontraron de la matriz dada.

Matriz de estudiantes:

 var studentIds = [1, 2, 3, 4, 5];

Registros en la colección:

 [{_id: 1, name: 'John'}, {_id: 4, name: 'mike'}]

Ahora la salida deseada que necesito es:

 [2, 3, 5]

Lo que he intentado hasta ahora que no proporciona la respuesta correcta:

 Students.aggregate([ { $match: { _id: { "$nin": studentIds }, status: "active" } }, { $group: { _id: null, "idnotIntheArray": {$push: "$_id"} } } ]);

¿Alguien puede encontrar lo que estoy haciendo mal aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Consulta

  • una forma de hacerlo es crear una nueva colección con 1 documento con esa matriz
  • desenrollar esa matriz
  • y luego busque con la otra colección (los estudiantes), si no hay coincidencia => no se encontró la identificación, así que mantenemos esa identificación

* La solución anterior es para MongoDB < 5.1, si tiene MongoDB 5.1 + no necesita insertar datos en la colección, puede comenzar desde una colección vacía y puede usar esto como primera etapa
{ $documents: [{"studentIds": [1, 2, 3, 4, 5]}] },

Puedes probarlo online en Playmongo

Colecciones (2 colecciones "matriz" y "estudiantes")

 [ "array", [{"studentIds": [1, 2, 3, 4, 5]}], "students", [{"_id": 1, "name": 'John'}, {"_id": 4, "name": 'mike'}] ]

Consulta
("matriz" es la colección que creó con 1 documento, con la matriz)

 array.aggregate( [{"$unwind": "$studentIds"}, {"$lookup": {"from": "students", "localField": "studentIds", "foreignField": "_id", "as": "results"}}, {"$match": {"$expr": {"$eq": ["$results", []]}}}, {"$group": {"_id": null, "not-found-ids": {"$push": "$studentIds"}}}])

Resultados

 [{ "_id": null, "not-found-ids": [ 2, 3, 5 ] }]
about 4 years ago · Juan Pablo Isaza 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