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

447
Vistas
MongoDB: busque si existe ID en una matriz de objetos

Me preguntaba, ¿hay alguna forma en MongoDB de obtener todos los documentos de una colección, excluyendo los que existen en otra, sin usar la agregación?

Déjame explicarme más;

Tengo una colección de "Usuarios" y otra colección donde hay una matriz de objetos. Algo como esto:

Usuario

 } "_id": "61e6bbe49d7efc57f895ab50", "name": "User 1" }, { "_id": "61e6b9239d7efc57f895ab02", "name": "User 2" }, { "_id": "61cae6176d0d9a36efd8f190", "name": "User 3" }, { "_id": "61cade886d0d9a36efd8f11a", "name": "User 4" },

La otra colección se ve así:

 { users: [ { user: { "_id": "61e6b9239d7efc57f895ab02", "name": "User 2", }, ... }, { user: { "_id": "61cae6176d0d9a36efd8f190", "name": "User 3", }, ... }, ], },

Me gustaría obtener todos los usuarios de la "matriz 1", excepto los de la "matriz 2". Así que el resultado debería ser:

 [ { "_id": "61e6b9239d7efc57f895ab02", "name": "User 1" }, { "_id": "61cae6176d0d9a36efd8f190", "name": "User 4" }, ],

Entonces, ¿hay alguna manera de hacerlo sin la necesidad de hacer una agregación?

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

0

puedes usar $and así:

 const found = await User.find({ $and: [ { _id: { $in: array1 } }, { _id: { $nin: array2 } } ] });
over 4 years ago · Santiago Trujillo Denunciar

0

Para cualquiera que busque una solución, si desea agregar un nuevo elemento a una matriz de objetos, donde, de alguna manera, olvidó inicializar el campo _id , recuerde que debe hacerlo, porque mongo agrega ese campo automáticamente (para usarlo para filtrar/ indexación).

Todo lo que tienes que hacer es escribir algo como esto;

 const data = Data.create({ _id: mongoose.Types.ObjectId.createFromHexString(uid), users: [{ user: userId, initiator: true, _id: userId}], })

y para la búsqueda, escribes lo que siempre escribes;

 const found = await User.find({ _id: { $nin: data.users } });
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