私はanother質問のコメントとしてこれを尋ねました。また、questionをmongodb-userに投稿しました。これまでの回答はないので、私は別の質問をすることに頼っています。MongoDBのネストされた配列クエリ
フィールドが配列を保持している場合は、オペレータで$は、そのフィールド指定された配列の値と一致した少なくとも一つの 要素を含む配列を保持している 文書を選択し、 (例えば、 など)
私が使用している:
mongod --version:
db version v2.2.2, pdfile version 4.5
Thu May 30 12:19:12 git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
mongo --version:
MongoDB shell version: 2.0.4
MongoDBのシェルで
:
db.nested.insert({'level1': {'level2': [['item00', 'item01'], ['item10', 'item11']]}})
ここではマニュアルに従って動作するはずのクエリ、それらが生み出す結果のリストです:
なぜこの仕事をしますか?
> db.nested.findOne({'level1.level2.0': 'item00'})
null
なぜ$ allが必要なのですか?
> db.nested.findOne({'level1.level2.0': {'$all': ['item00']}})
{
"_id" : ObjectId("51a7a4c0909dfd8872f52ed7"),
"level1" : {
"level2" : [
[
"item00",
"item01"
],
[
"item10",
"item11"
]
]
}
}
次のうち少なくとも1つは正常に動作するはずです。
> db.nested.findOne({'level1.level2.0': {'$in': ['item00']}})
null
> db.nested.findOne({'level1.level2': {'$in': ['item00']}})
null
クエリ構文が広告として機能しない場合、MongoDBを放棄することを検討しています。
ありがとうございます!
あなたはお返事をお待ちしておりますが、残念ながら、あなたの回答はどれも正しいものではありません。マニュアルの「読み込み」ページで、「次の操作は、アレイフィールドに含まれるすべての文書にカーソルを戻します。このフィールドには、「UNIX」という要素が含まれています。 $ inは配列を含むフィールドで動作するはずです。最後に、 "$ allが働いているため..."という記述は間違っています:フィールド内のすべての値がクエリに存在する必要はなく、クエリのすべての値がドキュメントのフィールドに存在する必要があります。 – dgorur
「$が原因で作業しています...」の修正をありがとうございます。だからあなたは$ inが配列のために働くべきだと言っています。今私は興味をそそられる。私はいくつかの実験をして、私が調べるかどうかを見ます。あなたはここで非常に興味深い質問をしています! – AntonioOtero
私は別の答えに私の発見を入れて、私はそれがあなたに役立つことを願っています。 – AntonioOtero