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

289
Views
Mongo Db $not $in query with multiple keys

I have a Mongo db collection of documents which contains _id , id1, id2, where (id1, id2) are unique together. I want to find all the documents except a list of dictionaries of (id1, id2).

In other words, I want all the documents except the except_arr.

Example of the documents:

{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 },
{ _id: 3, id1: 1024, id2: 2048 },
{ _id: 4, id1: 1552, id2: 1284 }

Example of the array to except:

except_arr = [
    {id1: 1024, id2: 2048},
    {id1: 1552, id: 1284}
]

The result should be:

{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

What you're looking for is called $nor

db.collection.find({
  $nor: [
    {
      id1: 1024,
      id2: 2048
    },
    {
      id1: 1552,
      id2: 1284
    }
  ]
})

Playground

over 4 years ago · Santiago Trujillo Report

0

After reviewing the code I've commented and see what Mohamad said I got this solution:

db.getCollection('test').find({
    $or: [ 
        { id1: { $nin: [1024, 1552] } }, 
        { id2: { $nin: [2048, 1284] } }  
    ]
})

My database objects:

[
    { _id: 1, id1: 25, id2: 1030 },
    { _id: 2, id1: 25, id2: 1031 },
    { _id: 3, id1: 1024, id2: 2048 },
    { _id: 4, id1: 1552, id2: 1284 },

    { _id: 5, id1: 1024, id2: 3 },
    { _id: 6, id1: 4, id2: 1284 }
]

The result:

[
    { _id: 1, id1: 25, id2: 1030 },
    { _id: 2, id1: 25, id2: 1031 },
    { _id: 5, id1: 1024, id2: 3 },
    { _id: 6, id1: 4, id2: 1284 }
]

EDIT
Below a example with different id1 and id2
*Online playground to test: https://mongoplayground.net/p/2vQyTkpgHNI
My collection: Collection

The query result. Query result

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!