mongodb でこのクエリを実行するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1700827

  •  19-09-2019
  •  | 
  •  

質問

私のドキュメントには配列フィールドがあります キー

キー1 そして キー2 2つの配列です

すべてのドキュメントが欲しいのですが、 キー に任意の値が含まれています キー1 そして の任意の値 キー2

役に立ちましたか?

解決

このクエリを表現する優れた方法はまだ (1.1.2 の時点では) ありません。リストに質問するか、機能リクエストを提出していただければ、何かを準備することができます。

現時点での最善の策は、おそらく $in クエリを使用して作業の半分を実行することです。

db.test.find({keys: {$in: Keys1}})

これは、Keys2 部分を実行できる $where と組み合わせて実行できます (ただし、インデックスは利用しません。そのため、できる限り通常のクエリ構文で実行するのが良いのです)。これは次のようになります。

db.test.find({keys: {$in: Keys1}, $where: "for (i in this.keys) { for (j in Keys2) { if (this.keys[i] == Keys2[j]) return true;}} return false;"})

mongodb 2.6 以降の最新バージョンでは、$and 演算子でこれを行うことができます。

db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top