Ich habe dies ein paar Mal über das Abholen der Unterdokumente allein aus der Mongo-Sammlung beantwortet hier , und hier
Es gibt derzeit einfach keine Möglichkeit, dies zu tun. Dies ist das Verhalten beim Filtern von eingebetteten Dokumenten mit mehreren Ebenen. Normalerweise würde der übereinstimmende Filter das gesamte Dokument zurückgeben, nicht die Teilmengen.
Es gibt bereits zwei offene Probleme in Mongo im Zusammenhang mit diesem Positionsoperator ($) in Feldern, um den Bezeichner zurückzugeben und Fähigkeit, die Daten eines Unterdokuments zu nutzen, dessen Inhalt verwendet wurde, um eine Abfrage mit dem $-Operator zu erfüllen . (Bitte melden Sie sich an, um abzustimmen, wenn Sie die Funktion wirklich benötigen)
Und Ihr alternatives Schema ist hier auch nicht hilfreich.
Sie müssen also jedes Feature in einem separaten Dokument wie diesem speichern, damit es so funktioniert, wie Sie es wollten
Funktion 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}
Funktion 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}
und Abfragen
db.features.find({'_id':someobjectid})
gibt nur die spezifische Funktion zurück