1

MongoDB を使い始めたのですが、集約について質問があります。さまざまな順序でさまざまなフィールドを使用するドキュメントがあります。例えば:

db.my_collection.insert({ "answers" : [ { "id" : "0", "type" : "text", "value" : "A"}, { "id" : "1", "type" : "text", "value" : "B"}]})


db.my_collection.insert({ "answers" : [ { "id" : "0", "type" : "text", "value" : "C"}, { "id" : "1", "type" : "text", "value" : "A"}]})

「answers.id」と「answers.value」を使用してクエリを実行し、結果を取得します。

試してみましたが、結果が得られませんでした。私の場合、次のコマンドを実行しました。

db.my_collection.aggregate({$match: {"answers.id":"0", "answers.value": "A"}})

そして、結果は、私が期待したときの2つの応答でした:

{ "answers" : [ { "id" : "0", "type" : "text", "value" : "A"}, { "id" : "1", "type" : "text", "value" : "B"}]

ありがとうございました!!!

4

1 に答える 1

1

$elemMatch演算子を使用して、配列の 1 つの要素をanswers指定された 'id' と 'value' の両方と照合する必要があります。

このようなものが動作するはずです:

db.my_collection.aggregate( {
        "$match" : { 
             "answers" { 
                 "$elemMatch" : { 
                        "id" : "0", 
                        "value" : "A"
                 }
             }
         } 
} )
于 2013-09-14T18:59:33.377 に答える