4

ドキュメントの一部であるタグを含む配列があります。例:["red"、 "green"、 "blue"、 "white"、 "black"]

ここで、赤と青のすべてのドキュメントを検索します。

4

2 に答える 2

11

$ all条件を使用して、「赤」と「青」の両方の条件に一致するレコードを検索します。

db.my_collection.find({tags: { $all : ["red","blue"]}})

「赤」または「青」のいずれかに一致するレコードが必要な場合は、$in条件を使用できます。

db.my_collection.find({tags: { $in : ["red","blue"]}})
于 2009-12-20T22:47:05.760 に答える
3

また、誰かが項目別検索を無効にする方法を疑問に思っている場合、つまり「赤」と「青」の両方に一致し、「緑」と「白」に一致しないレコードを見つける場合、これは$nin演算子を使用して実行できます。誰かが$ninドキュメントを読んでいるときに明らかです(http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24nin-説明の解析は私にとってトリッキーでした):

db.my_collection.find({tags: { $all : ["red","blue"], $nin : ["green", "white" ]}})

これは、否定を伴う比較的優れた検索構文を可能にするため、非常に優れています。

tokenRequired1 tokenRequired2 !tokenForbidden1 !tokenForbidden2

非常に自然なGmailスタイルの検索。

ここここで提案されているように、レコードからすべてのトークンの配列を作成すると、全文検索を実行できますが、それが効率的であるか、それとも最善の方法であるかはわかりません。

于 2010-11-18T16:23:44.440 に答える