2016-05-10 12 views
1

Screenshot of database in RobomongoWie kann ich eine Sammlung suchen einen verschachtelten Wert in einem seiner Dokumente in MongoDB

Im Screenshot zu finden oben Sie, dass ich ein Dokument (1) ObjectId (572b genannt geöffnet haben sehen können ... ec7a) von meinem Tests Sammlung in meiner Mongo-Datenbank. (Die Tests Sammlung ist voll von solchen Dokumenten) Am unteren Rand des Screenshots können Sie sehen, gibt es ein Feld mit dem Namen Name, die Zeichenfolge mit einem Wert von EditMessagesSettings ist. Ich möchte die Tests Sammlung abfragen und jedes Dokument zurückgeben, das eine bestimmte Name enthält (wie EditMessagesSettings in diesem Fall). Wie kann ich das machen?

Hier sind einige der Abfragen, die ich ohne Erfolg versucht habe, erhalten eine Rückmeldung wie abgerufen 0 Datensatz (e) in 4ms.

  • db.getCollection ('Tests') finden.. ({Name: "EditMessagesSettings"})
  • db.getCollection ('Tests') finden ({Name: {$ regex: "Einstellungen"} })

Edit:. wenn es irgendeine Konstellation ist, wenn ich in db.getCollection ('Tests') type ({Obj}), erhalte ich eine automatische Vervollständigung Option von ObjectId (

Antwort

2

Ich kann sehen, wo das Problem liegt. Sie müssen zwei Unterstriche anstelle von einem verwenden. Siehe das Beispiel unten:

_value vs. der richtige __value.

So sollte Ihre Abfrage wie folgt aussehen:

db.getCollection('tests').find({"Data.__value.Name":"EditMessagesSettings"}) 
+0

Dies funktioniert. Danke, freut mich sehr. – GnUfTw

0

Versuchen Sie

+0

Das Ergebnis dieser Abfrage: Fetched 0 Eintragung (en) in 5 ms. – GnUfTw

+0

Netter Versuch, @ ljpv14 verpasste einfach den doppelten Unterstrich für "Wert" ... – ppython