Ich war mir nicht sicher, wie ich dies title!Wählen Sie Dokumente, in denen alle Werte in einem Array-Feld in einem anderen Array vorhanden sind
So habe ich eine Reihe von Produkt-IDs
var productIds = [139,72,73,1,6]
und eine Reihe von Kundendokumenten in MongoDB
{
name: 'James',
products: [ 73, 139 ],
_id: 5741cff3f08e992598d0a39b
}
{
name: 'John',
products: [ 72, 99 ],
_id: 5741d047f08e992598d0a39e
}
Ich mag würde, Kunden finden, wenn alle ihre Produkte im Array von Produkt-IDs (productIds)
ich habe versucht:
'products' : {
'$in': productIds
}
Aber das gibt John, obwohl 99 nicht in der Liste der Produkt-IDs existieren
ich auch versucht:
'products' : {
'$all': productIds
}
die nichts zurückgibt, weil keine der Kunde die Produkte haben alle
Gibt es eine Möglichkeit zu erreichen, was ich brauche in einer einzigen Abfrage oder werde ich einige Post-Abfrage-Verarbeitung tun müssen?
Ich habe auch versucht
'products': {
'$in': productIds,
'$not': {
'$nin': productIds
}
}
aber dies scheint auch Kunden zurückzubringen, wenn nicht alle IDs Produkt