sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose:najděte dokumenty smíšených typů schémat s více položkami

Je to proto, že dotaz nemůže odpovídat žádným dokumentům, kde pole pole parameters má jako hodnotu přesný objekt pole [{"foo": "bar", "ding": "dong"}] . Abychom to demonstrovali, vložme do kolekce několik vzorových dokumentů:

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

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

Probíhá dotazování této kolekce na parameters pole s tímto objektovým polem [{"foo":"bar"}] přinese dokument s "_id" :ObjectId("551d777fcfd33f4e2a61e48f") . Pokud však změníte objekt dotazu tak, aby používal $elemMatch pak přinese oba dokumenty:

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



  1. MongoDB vyhledá pole objektů podle pole (podmínky spojení a nekorelované dílčí dotazy)

  2. Jak aktualizovat dynamické atributy MongoDB?

  3. Mongoose / MongoDB:počítání prvků v poli

  4. MongoDB – Omezte výsledky dotazu