MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoose:trova documenti di tipo schema misto con più voci

È perché la query non può corrispondere a nessun documento in cui il campo dell'array parameters ha l'oggetto array esatto come valore [{"foo": "bar", "ding": "dong"}] . Per dimostrarlo, inseriamo un paio di documenti di esempio in una raccolta:

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

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

Interrogazione di questa raccolta per parameters array con questo oggetto array [{"foo":"bar"}] porterà il documento con "_id":ObjectId("551d777fcfd33f4e2a61e48f") . Tuttavia, se modifichi l'oggetto query per utilizzare $elemMatch quindi porterà entrambi i documenti:

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