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

Aktualizace a vyhledávání struktury vložení Mongodb?

  1. Chyba syntaxe je způsobena tím, že musíte použít uvozovky kolem services.port_info
  2. Nicméně $elemMatch ve vnořených polích momentálně není podporován každopádně
  3. Naštěstí nepotřebujete $elemMatch pro tento druh dotazu

To by mělo fungovat:

db.hosts.find({ ip : "127.0.0.1"}, { "services.port_info.product" : "ssh" });

$elemMatch je vyžadováno, pokud chcete v objektu pole porovnat více kritérií, například "najít vše, kde port je 9000 a protokol je UDP". To by nebylo podporováno vaší datovou strukturou. Nejsem si jistý, proč port_info je pole objektů (možná pro nejisté situace, kdy by port mohl patřit dvěma různým službám?) - pokud by to byl jeden objekt, dokonce i $elemMatch bude podporováno.

Mějte také na paměti, že takový dotaz vždy vrátí celý objekt.




  1. Redis SYNC a EXEC

  2. Jak vrátím boolean v kategorii mongodb

  3. Víceklíčové indexy MongoDB a hranice průniků indexů

  4. Ujistěte se, že index nefunguje - MongoDB