Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

444
Views
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 answers
Answer question

0

puedes usar $and así:

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

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!