クエリでキーをワイルドカード化することはできますか? たとえば、次のレコードが与えられた場合、私はやりたいと思い.find({'a.*': 4})
ます。
{
'a': {
'b': [1, 2],
'c': [3, 4]
}
}
クエリでキーをワイルドカード化することはできますか? たとえば、次のレコードが与えられた場合、私はやりたいと思い.find({'a.*': 4})
ます。
{
'a': {
'b': [1, 2],
'c': [3, 4]
}
}
尋ねられたように、これは不可能です。リンク先のサーバーの問題は、まだ「不明な問題」の下にあります。
MongoDB には、配列の使用に関するある程度のインテリジェンスがあり、それがそのような機能を取り巻く複雑さの一部だと思います。
次のクエリを見てdb.foo.find({ 'a.b' : 4 } )
ください。このクエリは、次のドキュメントに一致します。
{ a: { b: 4 } }
{ a: [ { b: 4 } ] }
では、「ワイルドカード」はここで何をするのでしょうか? db.foo.find( { a.* : 4 } )
最初のドキュメントと一致しますか? 2番目はどうですか?
さらに、これは意味的にどういう意味ですか?あなたが説明したように、クエリは事実上「そのドキュメント内の任意のフィールドの値が 4 であるドキュメントを検索する」です。それは少し珍しいです。
達成しようとしている特定のセマンティックはありますか? おそらく、ドキュメント構造を変更すると、必要なクエリが得られるでしょう。