38

クエリでキーをワイルドカード化することはできますか? たとえば、次のレコードが与えられた場合、私はやりたいと思い.find({'a.*': 4}) ます。

{
  'a': {
    'b': [1, 2],
    'c': [3, 4]
  }
}
4

1 に答える 1

13

尋ねられたように、これは不可能です。リンク先のサーバーの問題は、まだ「不明な問題」の下にあります

MongoDB には、配列の使用に関するある程度のインテリジェンスがあり、それがそのような機能を取り巻く複雑さの一部だと思います。

次のクエリを見てdb.foo.find({ 'a.b' : 4 } )ください。このクエリは、次のドキュメントに一致します。

{ a: { b: 4 } }
{ a: [ { b: 4 } ] }

では、「ワイルドカード」はここで何をするのでしょうか? db.foo.find( { a.* : 4 } )最初のドキュメントと一致しますか? 2番目はどうですか?

さらに、これは意味的にどういう意味ですか?あなたが説明したように、クエリは事実上「そのドキュメント内の任意のフィールドの値が 4 であるドキュメントを検索する」です。それは少し珍しいです。

達成しようとしている特定のセマンティックはありますか? おそらく、ドキュメント構造を変更すると、必要なクエリが得られるでしょう。

于 2011-05-31T17:44:08.153 に答える