我在一个集合中有以下项目:
{ "_id":1, "vals": [ { a:1, b:2, c:0 }, { a:1, b:2, c:1 }, { a:1, b:2, c :2 } ] }
{ "_id":2, "vals": [ { a:1, b:2, c:1 }, { a:1, b:2, c:2 }, { a:1, b:2, c:0 } ] }
{ "_id":3, "vals": [ { a:1, b:2, c:2 }, { a:1, b:2, c:0 }, { a:1, b:2, c:1 } ] }
我想找到所有带有( vals.c > 1 )的项目,但只考虑数组中的第一个元素。
以正确的方式这样做我只会得到项目: _id:2, _id:3 结果。
采取以下查找请求,我得到了所有项目。
db.items.find( { vals: { $elemMatch: { c: { $gte:1 } } }, { "vals.$": 1 } } )
知道如何提出请求以获得期望的结果吗?