If I have this collection
[
{
"_id": "637cbf94b4741277c3b53c6c",
"text": "outter",
"username": "test1",
"address": [
{
"text": "inner",
"username": "test2",
"_id": "637cbf94b4741277c3b53c6e"
}
],
"__v": 0
}
]
and would like to search for the nested document by _id
and return all of the nested document. If I do
db.collection.find({
_id: "637cbf94b4741277c3b53c6c"
},
{
address: {
$eq: {
_id: "637cbf94b4741277c3b53c6e"
}
}
})
I get
query failed: (Location16020) Expression $eq takes exactly 2 arguments. 1 were passed in.
Question
Can anyone see what I am doing wrong?
2
Answers
use $elemMatch and also you have extra unneeded brackets. try
Edit: if you only want to return the address add projection like this
One option is to use find:
See how it works on the playground example
The other option is to use aggregation pipeline:
See how it works on the playground example