1

私がそのようないくつかの文書を持っているとしましょう

{
  title: 'blah',
  value: {
    "A": {property: "foo"},
    "B": {property: "bar"},
    "C": {property: "foo"},
    "D": {property: "foo"}
  }
}

{
  title: 'blah2',
  value: {
    "A": {property: "bar"},
    "B": {property: "bar"},
    "C": {property: "bar"},
    "D": {property: "foo"}
  }
}

どのmongodbクエリが私に持っているすべてのドキュメント/ハッシュキーを取得しますか{property: "foo"}

(これはクエリの後にjsを使用して実行できることは知っていますが、クエリ自体の中で実行できますか?)

4

2 に答える 2

1

問題は、オブジェクトキーのワイルドカードがないことです(https://jira.mongodb.org/browse/SERVER-267を参照)。そのため、「値」にすべてのキーをリストしないと、これを行うことはできません。 。すべてのキーが何であるかを知っているなら、それはオプションかもしれませんが、私はあなたが知らないことを想像します。

「値」をオブジェクトではなく配列に変換すると、クエリを簡単に実行できます(ハッシュキーではなくドキュメントが返されます)。

于 2012-07-27T18:21:15.800 に答える
1

最初の答えが言うように、mongodbクエリ言語には、このタイプのクエリを実行できるものはありません。

スキーマを変更して、値を次のような配列にすることを検討することをお勧めします。

value: [
         { name : "A", property : "bar" },
         { name : "B", property : "bar" },
         { name : "C", property : "bar" },
         { name : "D", property : "foo" }
       ]

次に、value.propertyでインデックスを作成し、value.property="foo"でクエリを実行できます。

于 2012-07-27T18:40:21.267 に答える