1. ホーム
  2. arrays

[解決済み] mongodb の複数の配列アイテムによる検索

2022-10-01 09:44:35

質問

このようなレコードがあった場合。

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

MongoDBで複数の単語をマッチさせるにはどうしたらいいですか?1つの単語をマッチさせる場合、私はこれを行うことができます。

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

しかし、これを複数の単語で試すと、うまくいきません。

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

配列を使うことで、個々の中身を照合するのではなく、配列全体をレコードの中にあるものと照合しようとするのでしょう。

どのように解決するのですか?

が存在するドキュメントを探そうとしているかどうかによって異なります。 words が両方の要素 ( texthere ) を使って $all :

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

またはそのどちらか( text または here ) を使って $in :

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