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

Mongoose:Finden Sie Dokumente mit gemischten Schematypen mit mehreren Einträgen

Dies liegt daran, dass die Abfrage keine Dokumente abgleichen kann, in denen das Array-Feld parameters hat das exakte Array-Objekt als Wert [{"foo": "bar", "ding": "dong"}] . Um dies zu demonstrieren, fügen wir ein paar Beispieldokumente in eine Sammlung ein:

/* 0 */
{
    "_id" : ObjectId("551d777fcfd33f4e2a61e48f"),
    "parameters" : [ 
        {
            "foo" : "bar"
        }
    ]
}

/* 1 */
{
    "_id" : ObjectId("551d777fcfd33f4e2a61e490"),
    "parameters" : [ 
        {
            "foo" : "bar",
            "ding" : "dong"
        }
    ]
}

Abfragen dieser Sammlung nach parameters Array mit diesem Objektarray [{"foo":"bar"}] bringt das Dokument mit "_id" :ObjectId("551d777fcfd33f4e2a61e48f") . Wenn Sie jedoch Ihr Abfrageobjekt ändern, um $elemMatch dann bringt es beide Dokumente:

db.collection.find({"parameters": { "$elemMatch": { "foo": "bar" } }});