sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb inbäddningsstruktur uppdatera och söka?

  1. Syntaxfelet beror på att du måste använda citattecken runt services.port_info
  2. Men $elemMatch i kapslade fält stöds för närvarande inte i alla fall
  3. Lyckligtvis behöver du inte $elemMatch för den här typen av fråga

Detta bör göra:

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

$elemMatch krävs om du vill matcha flera kriterier inuti arrayobjektet, till exempel "hitta alla där porten är 9000 och protokollet är UDP". Det skulle inte stödjas med din datastruktur. Jag är inte säker på varför port_info är en array av objekt (kanske för osäkra situationer där en port kan tillhöra två olika tjänster?) - om det vore ett enda objekt, till och med $elemMatch skulle stödjas.

Tänk också på att en sådan fråga alltid returnerar hela objektet.




  1. Hur ansluter man till en annan MongoDB-databas som superanvändare med NodeJS?

  2. Spela 2.0 FakeApplication setup med testkonfiguration

  3. MongoDB $lookup pipeline match av _id fungerar inte

  4. Hur visar man uppladdade bilder till serversidan igen i webbläsaren med hjälp av MEAN stack?