mongodbは複数の配列アイテムで検索します


96

このような記録があれば、

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

MongoDBで複数の単語を一致させるにはどうすればよいですか?1つの単語に一致する場合、これを行うことができます。

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

しかし、これを複数の単語に対して試しても、うまくいきません。

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

配列を使用することで、個々のコンテンツを照合するのではなく、配列全体をレコード内の配列と照合しようとしていると思います。

回答:


168

あなたはどこドキュメントを検索しようとしているかどうかに依存しwords、両方の要素が含まれています(texthere使用)$all

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

またはそれらのいずれか(textまたはhere)を使用して$in

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

3
これは私が配列内のオブジェクトIDを検索し、それを必要とし、あまりにも私を助けて、どこで$のようなもの:[ObjectIdが(「4f9f2c336b810d0cf0000017は」)]失敗し、$で:[「4f9f2c336b810d0cf0000017」]は働いていた
jbnunn


1
これは、配列をループして単一のfind()を実行するよりも優れていますか?
Rohit Nair、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.