MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie mache ich eine Abfrage in dieser verschachtelten Dokumentenstruktur (MongoDB)?

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