2016-06-23 11 views
0

私はアイテムのリストを持つドキュメントの購入を持っています。各アイテムにはitemNameとquantityがあります。Mongooseは配列のオブジェクトフィールドでドキュメントを検索します

したがって、itemName 'keyboard'の数量10のすべての購入伝票を照会するにはどうすればよいですか?

Purchase = new Schema({ 
    items: [{ 
    itemName: String, 
    quantity: Number, 
    }] 
}); 
+0

'Purchase.find({ "items.quantity" 10、 "items.itemName": "キーボード"})。EXEC(コールバック); ' – chridam

+0

これは' items'が 'quantity'と' itemName'というプロパティを持つObjectであると予想しているので動作しません。 –

+0

@ ConstantinAzizovでは、配列を検索できます(https://docs.mongodb.com/manual/tutorial/query-documents/#match-a-field-without-specifying-array-index)。しかし、特に "keyboard" _ itemsではなく、数量が10の項目と一致するため、機能しません。 – robertklep

答えて

0

あなたはこの場合$elemMatch演算子を使用する必要があります。

Purchase.find({ 
    items: { 
    $elemMatch: { 
     itemName: 'keyboard', 
     quantity: 10 
    } 
    } 
}).exec(function(err, items) { 
    // Code goes here 
}); 
関連する問題