2016-06-07 9 views
0

Für unsere Software brauche ich einen mongodb Filter, um bestimmte Dokumente aus der Datenbank zu filtern. Hier ist ein Beispiel, wie meine Daten wie folgt aussieht:MongoDb Filter für bestimmte Elemente in einem Array

[ 
    { 
    "_id": "v4fv654vae65", 
    "Title": "Title 123", 
    "Array": [ 
     "Value1", 
     "Value2" 
    ] 
    }, 
    { 
    "_id": "f46vrwe6vg", 
    "Title": "Title 456", 
    "Array": [ 
    "Value3", 
    "Value1", 
    "Value2" 
    ] 
    } 
] 

Jetzt brauche ich einen Filter, der die Array-Filter. Der Filter muss nur die Werte "Value1" und "Value2" prüfen. Ich möchte das Dokument nicht mit dem Wert: "Value3".

Mein aktueller Filter sieht wie folgt aus:

.find({ "Array": {$in: ["Value1", "Value2"]}}) 

Dieser Filter funktioniert fast, aber gibt auch die doucment mit dem "Value3" Feld im Array.

+0

Sie können alle statt in verwenden. http://stackoverflow.com/questions/5366687/how-to-check-if-an-array-field-contains-a-unique-value-an-another-array-in-mongo –

+0

Ich denke, dass Sie hier suchen sollten : http://stackoverflow.com/questions/37599298/in-mongo-how-would-i-match-all-items-of-collection-against-a-larger-array –

Antwort

0

Dont $ in, verwenden Sie versuchen, auf diese Weise

db.getCollection('collectionName').find({"Array":[ 
      "Value1", 
      "Value2" 
     ]}) 

Ausgang

[ 
{ 
    "_id": "v4fv654vae65", 
    "Title": "Title 123", 
    "Array": [ 
     "Value1", 
     "Value2" 
    ] 
    } 
] 
0

.find ({$ und: [ { "Array": {$ nin: [ "Value3"]}}, { "Array": {$ in: [ "Wert1", "Value2" ]}} ]})

mit freundlichen Grüßen

Verwandte Themen