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

MongoDB vyhledá každý diktát v seznamu ve sbírce

I když je zmíněno, že skutečně $and operátor není vyžadován, v žádné podobě to není dotaz, který chcete. Zvažte následující:

db.user.find_one({ 'names.firstName': 'alice','names.lastName': 'jones' })

To ve skutečnosti dělá shodují se s daným záznamem, protože existují oba prvky s hodnotami "firstName" rovným "alice" a "lastName" rovným "jones". Ale problém je zde samozřejmě jednoduchý v tom, že v poli není žádný skutečný prvek, který by měl pro obě tyto hodnoty dílčí dokument.

Aby bylo možné porovnat, kde prvek pole obsahuje „obě“ daná kritéria, musíte použít $elemMatch operátor. To aplikuje podmínku dotazu na "prvky" pole.

db.user.find_one({ 
    'names': { '$elemMatch': { 'firstName': 'alice','lastName': 'smith' }
})

A samozřejmě, pokud byste zkusili "alice" a "jones", pak by to neodpovídalo, protože žádný prvek ve skutečnosti tuto operaci neobsahuje.



  1. $push v MongoDb nefunguje?

  2. docker-compose + django + redis - Chyba 111 při připojování k 127.0.0.1:6379. Spojení odmítnuto

  3. Jak vrátit primární klíč Redis prostřednictvím výstupu šablony ARM?

  4. MongoDB:Dotaz na klíč, který má v názvu mezeru