いくつかのクエリを実行した後、$inは配列の配列では機能しないという結論に達しました。 。
$elemMatch
を使用できます 代わりに、それは機能しますが、MongoDBのドキュメントがそれについて警告していないのはイライラします。
このドキュメントを作成しました:
{
"_id": "51cb12857124a215940cf2d4",
"level1": [
[
"item00",
"item01"
],
[
"item10",
"item11"
]
],
"items": [
"item20",
"item21"
]
}
フィールド「items」は文字列の配列であり、このクエリは完全に機能することに注意してください。
db.nested.findOne({"items":{"$in":["item20"]} })
現在、「level1.0」も文字列の配列ですが、唯一の違いは、別の配列内にあることです。このクエリは機能するはずですが、機能しません:
db.nested.findOne({"level1.0":{"$in":["item00"]} })
結果を得る唯一の方法は、$ elemMatchを使用することです:
db.nested.findOne({"level1":{"$elemMatch":{"$in":['item00']}} })
したがって、$elemMatch
問題は解決しますが、実際の解決策は、MongoDBのドキュメントを更新して$in
と記載することです。 配列の配列では機能しません。おそらく、10genにリクエストを送信する必要があります。