sql >> Database >  >> NoSQL >> MongoDB

Mongodb embed structuur bijwerken en zoeken?

  1. De syntaxisfout is dat je aanhalingstekens moet gebruiken rond services.port_info
  2. Echter, $elemMatch in geneste velden wordt momenteel niet ondersteund hoe dan ook
  3. Gelukkig heb je $elemMatch niet nodig voor dit soort vragen

Dit zou moeten doen:

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

$elemMatch is vereist als u aan meerdere criteria binnen het array-object wilt voldoen, bijvoorbeeld "find all where port is 9000 en protocol is UDP". Dat zou niet worden ondersteund door uw gegevensstructuur. Ik weet niet zeker waarom port_info is een array van objecten (misschien voor onzekere situaties waarin een poort tot twee verschillende services zou kunnen behoren?) - als het een enkel object was, zelfs de $elemMatch zou worden ondersteund.

Houd er ook rekening mee dat een dergelijke zoekopdracht altijd het hele object retourneert.




  1. mongodb-type wijzigen in array

  2. MongoDB-aggregatietelling is te traag

  3. Tellen op basis van conditie en delen door # records voor tijdsinterval

  4. Hoe maak je een Mongoose-schema dat invoer opslaat als html in mongodb