2016-06-23 9 views
0

Ich habe einen Dokumentkauf mit einer Liste von Elementen. Jeder Artikel hat itemName und Menge.Mongoose Suchdokumente nach Objektfeldern eines Arrays

Also, wie kann ich für alle Kaufdokumente mit Menge 10 für itemName 'Tastatur' abfragen?

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

'Purchase.find ({ "items.quantity": 10 "items.itemName": "Tastatur"}). Exec (Callback); ' – chridam

+0

Dies wird nicht funktionieren, weil es erwartet, dass' Objekte' Objekt mit den Eigenschaften 'quantity' und' itemName' ist. –

+0

@KonstantinAzizov können Sie Arrays [so] suchen (https://docs.mongodb.com/manual/tutorial/query-documents/#match-a-field-without-specifying-array-index). Es wird jedoch nicht funktionieren, da es _any_ item mit einer Menge von 10, nicht speziell _ "Tastatur" _ Elemente übereinstimmen wird. – robertklep

Antwort

0

Sie $elemMatch Betreiber in diesem Fall verwendet werden soll:

Purchase.find({ 
    items: { 
    $elemMatch: { 
     itemName: 'keyboard', 
     quantity: 10 
    } 
    } 
}).exec(function(err, items) { 
    // Code goes here 
}); 
Verwandte Themen