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

Mongodb - regex match af nøgler til underdokumenter

Det er ikke muligt at forespørge mod dokumentnøgler på denne måde. Du kan søge efter eksakte matches ved hjælp af $exists , men du kan ikke finde nøglenavne, der matcher et mønster.

Jeg går ud fra (måske forkert), at du forsøger at finde dokumenter, der har et URL-underdokument, og at ikke alle dokumenter vil have dette? Hvorfor ikke skubbe den type information et niveau ned, sådan som:

{
  payload: {
    type: "url",
    url: "Facebook.com",
    ...
  }
}

Så kan du forespørge som:

db.foo.find({"payload.type": "url", ...})

Jeg ville også være eftergivende, hvis jeg ikke bemærkede, at du ikke skulle bruge prikker (. ) er nøglenavne i MongoDB. I nogle tilfælde er det muligt at oprette dokumenter som dette, men det vil skabe stor forvirring, når du forsøger at forespørge i indlejrede dokumenter (hvor Mongo bruger prik som en "sti-separator" så at sige).



  1. Hvordan håndterer MongoDB dokumentlængde i et tekstindeks og tekstscore?

  2. Vælg dokumenter, hvor alle værdier i et matrixfelt findes i et andet matrix

  3. understøtter mongoose virtuelle felter i udvalgte som SQL

  4. MongoDB ingen plads tilbage på enheden med docker