私がやろうとしていること:
特定の条件に一致するコレクションのフィールドをフィルタリングします。フィールド内のすべてのアイテム (アイテムの配列) を返す代わりに、一致したアイテムのみを表示したいのです。
に似ている
select items from test where items.histPrices=[10,12]
これは、mongodb Web サイト ( http://www.mongodb.org/display/DOCS/Retrbeing+a+Subset+of+Fields ) にあるものにも似ています。
これが私が試したことです:
db.test.save({"name":"record", "items":[{"histPrices":[10,12],"name":"stuff"}]})
db.test.save({"name":"record", "items":[{"histPrices":[10,12],"name":"stuff"},
{"histPrices":[12,13],"name":"stuff"},{"histPrices":[11,14],"name":"stuff"}]})
db.test.find({},{"name":1,"items.histPrices":[10, 12]})
item[] 内のすべてのアイテムを含め、items.histPrices:[10,12] に一致するすべてのオブジェクトを返します。でも、条件に合わないものは欲しくない。
2 年前に Mongodb に残されたコメントから、その histPrices[10,12] を持つ項目のみを取得する解決策は、javascript コードを使用することです。つまり、結果セットをループして、他の項目を除外します。
クエリだけでそれを行う方法があるのだろうか。