I am fairly new to mongodb, and I have what is hopefully a simple question:
I have a nested schema where I have a field that is an array, where each item of that array is an object that itself has an array field.
For example:
> db.mytest.insert({
name: 'a',
top: [
{x:1, y:2, nest: [{p:1, q:2}, {p:2, q:3}]},
{x:2, y:3, nest: [{p:4, q:5}, {p:6, q:7}]}
]
})
I can query for certain values of p just fine, and can even limit my result to the first matching element of top:
> db.mytest.findOne({'top.nest': {$elemMatch: {p:6}}}, {'top.nest.$': 1})
{"_id":ObjectId(...), top: [{x:2, y: 3, nest: [{p:4, q:5}, {p:6, q:7}]}]}
Which brings me to my question: {'top.nest.$': 1} and {'top.$': 1} as my projection document both return the same result. How can I limit my search results to only include the first matching element of nest?
Do I need a second pass that iterates over the result of this style of query?