Abfragen von MongoDB -Array -Feldern mit mehr als einem Zustand
Frage
Gibt es eine Möglichkeit, Array -Felder innerhalb von Dokumenten in MongoDB unter Verwendung von mehr als einem Zustand abzufragen? Beispieldokument:
{
'title': 'A document title',
'array_element': [
{
'some_identifier': 'abcdefg',
'value': 10
},
{
'some_identifier': 'hijklmnop',
'value': 5
},
{
...etc...
}
]
}
Ich muss eine Sammlung abfragen, um den niedrigsten Wert für eine bestimmte Kennung zu finden. Diese Werte werden jedoch mit anderen in einem Array gespeichert. Ich weiß, ich kann die Sammlung abfragen, um das Dokument zu finden, das das Array -Element mit dem niedrigsten Wert enthält, und das das Array -Element enthält, das mit einer Kennung übereinstimmt, aber ich kann nicht sicher sein, dass ein bestimmtes Array -Element beiden Bedingungen übereinstimmt . Gibt es eine Möglichkeit, dies effizient zu tun?
Lösung
Du kannst den ... benutzen $elemMatch
Operator Um dies zu erreichen, z.
foo.find( { "array_element" :
{ $elemMatch : { 'some_identifier' : 'abcdefg', 'value' : 8 } } } );