0

すべての要素が特定のユーザー指定の配列のメンバーであるような配列を含むドキュメントについて、mongodb にクエリを実行したいと考えています。つまり、配列が特定の配列のサブセットであるドキュメントを選択する必要があります。たとえば、このコレクションがある場合:

> db.foos.find()
{ "_id" : ObjectId("4fe3901d0add2727c3adc7ca"), "tags" : [ "a", "b", "c" ] }
{ "_id" : ObjectId("4fe390220add2727c3adc7cb"), "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cc"), "tags" : [ "a" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cd"), "tags" : [ "c" ] }

私のコードには array が与えられました["a", "b", "z"]。次の結果を生成するクエリが必要です。

> db.foos.find( THE_QUERY! )
{ "_id" : ObjectId("4fe390220add2727c3adc7cb"), "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cc"), "tags" : [ "a" ] }

これらのドキュメントが選択されたのは、["a", "b"]との両方["a"]が のサブセットであるためです["a", "b", "z"]

4

1 に答える 1

0

この回答はOPの問題を解決しません。コメントによると、必要な機能は現在MongoDBに存在しません。コメントの歴史のためにこれを残しておきます

$ in高度なクエリを使用したい:

$in演算子はSQLIN修飾子に類似しており、一致する可能性のある配列を指定できます。

これは、「この指定された配列にタグ値を持つすべてのfoosドキュメント」と言います。

db.foos.find({tags: {$in: ["a", "b", "z"]}})

特定の配列を持つすべての要素と具体的に交差するドキュメントを検索する場合は、$ all: を使用できます。

$all演算子は$inに似ていますが、指定された配列の値と一致する代わりに、配列のすべての値と一致する必要があります。

これは、「これらすべての要素を含むタグ配列を持つすべてのfoosドキュメント」と言います。

db.foos.find({tags: {$all: ["a", "b", "z"]}})
于 2012-06-21T21:45:06.037 に答える