web-dev-qa-db-fra.com

mongodb trouver par plusieurs éléments de tableau

Si j'ai un disque comme celui-ci;

{
  "text": "text goes here",
  "words": ["text", "goes", "here"]
}

Comment faire correspondre plusieurs mots de celui-ci dans MongoDB? En faisant correspondre un mot unique, je peux le faire;

db.find({ words: "text" })

Mais lorsque j'essaye plusieurs mots, cela ne fonctionne pas.

db.find({ words: ["text", "here"] })

J'imagine qu'en utilisant un tableau, il tente de faire correspondre le tableau entier à celui de l'enregistrement, plutôt que de faire correspondre le contenu individuel.

89
Stephen Belanger

Cela dépend si vous essayez de trouver des documents où words contient les deux éléments (text et here) en utilisant $all :

db.things.find({ words: { $all: ["text", "here"] }});

ou l'un d'eux (text ou here) en utilisant $in :

db.things.find({ words: { $in: ["text", "here"] }});
148
user24359