コレクションに次のアイテムがあります。
{ "_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 } } )
希望する結果を得るために、リクエストを行う方法はありますか?