Zenigata Zenigata - 1 year ago 113
JSON Question

MongoDB find key on nested object KEY (JSON)

So pretty new and absolutely uneducated on MongoDB.

Having this JSON structure:

"id": "123456",
"makes": {
"abc": {
"att1": 4,
"att2": "fffff",
"att3": 46
"fgh": {
"att1": 8,
"att2": "ggggg",
"att3": 6
"rty": {
"att1": 3,
"att2": "hhhh",
"att3": 4
"iop": {
"att1": 4,
"att2": "llll",
"att3": 3


how can I query the DB for "fgh" make?
I tried:


but that doesn't work.
It works fine if I write:


thank you in advance!

mtj mtj
Answer Source

When you try to query for makes.fgh, you don't do a query on the content, but on the structure, as "fgh" is not a value but a sub-document.

You can achieve this with a $exists search:

db.myCollection.find( { "makes.fgh" : { $exists : true } })

See https://docs.mongodb.com/manual/reference/operator/query/exists/ for reference.

To integrate @chridam's helpful comment:

If you are only interested in that sub-document, you can also add a projection to the find:

db.myCollection.find({ "makes.fgh" : { $exists : true }}, { "makes.fgh" : 1 })

Have a look at https://docs.mongodb.com/manual/reference/method/db.collection.find/#db.collection.find for details.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download