Ich bin neu in MongoDB. Hier ist mein JSON DokumentAbfrage des eingebetteten Dokumentarrays mit falscher Antwort
>
> db.test.find().pretty()
{
"_id" : ObjectId("59ee168f9da785077ed9359d"),
"recordid" : 500,
"metadata" : [
{
"field" : 1,
"values" : [
100,
102,
110,
151,
804
]
},
{
"field" : 2,
"values" : [
201,
202,
151
]
},
{
"field" : 3,
"values" : [
350,
351
]
}
]
}
>
>
Ich versuche, den $ und Operator in einer Abfrage zu verwenden, so dass I 0 für die folgende Abfrage abgerufen werden. Es gibt jedoch 1 zurück. 1 ist die richtige Antwort, aber nicht was ich will.
...
...
>
> db.test.find({
... $and:[
... {"metadata.field": 2},
... {"metadata.values": { $in: [654,804]}},
... {recordid: 500}
... ]
... }
... ).count()
1
>
>
Ich weiß, warum es 1 Ergebnis zurückgibt. Dies liegt daran, dass der "Wert" von 804 in field: 1
existiert.
Was ich will ist, dass die Abfrage 0 Ergebnisse zurückgibt, weil field: 2
keinen der Werte 654 und 804 im Feld "Wert" (es hat nur 151, 201 und 202).
Was mache ich falsch?
Steve