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

Mongodb-Abfrage ohne Feldnamen

Leider unterstützt MongoDB keine Methode zum Abfragen aller Felder mit einem bestimmten Wert. Es gibt ein vorhandenes Jira-Ticket, das diese Erweiterung anfordert:https://jira.mongodb.org/browse/SERVER-1248 . Fühlen Sie sich frei, dieses Ticket zu kommentieren, abzustimmen oder ihm zu folgen.

In der Zwischenzeit besteht die übliche Vorgehensweise darin, das MongoDB-Schema zu ändern. Für Ihr Beispiel würden Sie Ihr vorhandenes Schema ändern:

{"123": "apple", "217": "pear", "179": "orange"} 
{"831": "pear", "189": "grapes"} 

Und Sie könnten es etwa so strukturieren:

 { tags: [
        { cid: "123", value: "apple" },
        { cid: "217", value: "pear" },
        { cid: "179", value: "orange" },
      ]
    }
   { tags: [
        { cid: "831", value: "pear" },
        { cid: "189", value: "grapes" },
      ]
    }

Sobald Sie dies getan haben, können Sie die folgende Abfrage durchführen, um alle gewünschten Dokumente zu finden:

 db.docs.find( {'tags.value': "apple" } )

Beachten Sie, dass Sie mit diesem Schema die Felder „tags.cid“ und „tags.value“ indizieren können, was Ihr ursprüngliches Schema nicht tut.

Ich hoffe, das hilft.

-Wilhelm