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

75
Views
Querying for an object vs array

How do I query for an object vs an array of objects in a document?

I need to select all the documents that are like Dataset 2.

Dataset 1:

{
    'firstname' : 'John', 
    'lastname': 'Smith', 
    'assistance': [
        {'type': 'Food', 'amount': 20}
    ]
}

Dataset 2:

{
    'firstname' : 'John', 
    'lastname': 'Smith', 
    'assistance': {
        'type': 'Food', 
        'amount': 20
    }
}
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

you can use $type , $type won't work for dataset1, the reason being that it doesn't check if the field is array or not, what it checks is that the field contains array or not.

But if you are looking for dataset 2, you can use $type for object

db.whatever.find( { "assistance" : { $type : 3 } } );

or

db.whatever.find( { "assistance" : { $type : "object" } } );
over 4 years ago · Santiago Trujillo Report

0

MongoDB stores data in BSON format.

BSON stands for Binary JSON.

BSON supports various datatypes for values in documents.

According to documentation of MongoDB

$type selects the documents where the value of the field is an instance of the specified BSON type.

According to above mentioned documents

Dataset 1:Datatype of assistance field is an array.

Dataset2 : Datatype of assistance field is an object.

To retrieve only documents containing assistance key having object as a data type please try executing following query in MongoDB shell.

db.collection.find({assistance:{$type:3}})

For more detailed description regarding BSON types please refer documentation as mentioned in below URL

https://docs.mongodb.com/manual/reference/bson-types/

over 4 years ago · Santiago Trujillo Report

0

db.foo.find( { "assistance" : { $type : 3 } } ); // 3 is bson type for object

will return both the documents and

db.foo.find( { "assistance" : { $type : 4 } } ); // 4 is bson type for object

will return none of the two documents.

This is becuase in mongodb, when querying on an array, the array elements are checked instead on the complete array.

You can eliminate all elements where assistance is of type array by:

db.foo.find({"assistance.0" : {$exists : false}})
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!