sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb integrere strukturopdatering og søgning?

  1. Syntaksfejlen skyldes, at du skal bruge anførselstegn omkring services.port_info
  2. Men $elemMatch i indlejrede felter understøttes i øjeblikket ikke alligevel
  3. Heldigvis behøver du ikke $elemMatch for denne form for forespørgsel

Dette burde gøre:

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

$elemMatch er påkrævet, hvis du ønsker at matche flere kriterier inde i array-objektet, for eksempel "find alle, hvor porten er 9000 og protokollen er UDP". Det ville ikke være understøttet med din datastruktur. Jeg er ikke sikker på hvorfor port_info er en række objekter (måske til usikre situationer, hvor en port kunne tilhøre to forskellige tjenester?) - hvis det var et enkelt objekt, endda $elemMatch ville blive understøttet.

Husk også, at en sådan forespørgsel altid vil returnere hele objektet.




  1. Redis kø med krav udløber

  2. Flask mongoengine forbindes gennem uri

  3. Hvordan udfører jeg SQL Join-ækvivalenten i MongoDB?

  4. redis og watch + multi tillader samtidige brugere