$in
演算子は配列で動作します。MongoDB:サブ文書内のキーを持つ文書を検索
辞書には同等の機能はありますか?
次のコードは、2つのテストドキュメントを作成し、配列ドキュメントに列挙された値の1つを含むドキュメントを検索しますが、サブドキュメントに同じ値を含むものは見つかりません。以下の回答で提案されているようリストを使用
> use test
> db.stuff.drop()
> db.stuff.insertMany([{lst:['a','b'],dic:{a:1,b:2}},{lst:['a','c'],dic:{a:3,c:4}}])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("595bbe8b3b0518bcca4b1530"),
ObjectId("595bbe8b3b0518bcca4b1531")
]
}
> db.stuff.find({lst:{$in:['b','c']}},{_id:0})
{ "lst" : [ "a", "b" ], "dic" : { "a" : 1, "b" : 2 } }
{ "lst" : [ "a", "c" ], "dic" : { "a" : 3, "c" : 4 } }
> db.stuff.find({dic:{$in:['b','c']}},{_id:0})
>
EDIT(以下の答えに応じて)
は、目的の要素を見つけることから私を防ぎます。 、サブ文書については
> x=db.stuff.findOne({lst:{$in:['b','c']}},{_id:0})
{ "lst" : [ "a", "b" ], "dic" : { "a" : 1, "b" : 2 } }
> x
{ "lst" : [ "a", "b" ], "dic" : { "a" : 1, "b" : 2 } }
> x.dic.a
1
> x.dic.b
2
私はここに書いてあまりにも長いコメントがありましたので、私は質問を編集しました。あなたはそれを見て、あなたの意見を教えてもらえますか? – stenci
私の答えを更新しました。 –
ありがとうございます。私は場合によっては、リスト/辞書のサイズ、おそらくどの戦略を使用するかによって決定します。 – stenci