1

私は次の文書を持っています:

{
    "results" : [ 
        {
            "name" : "foo",
            "score" : 10
        }, 
        {
            "name" : "bar"
        }
    ]
}

フィールドが存在する場合にのみ、scoreフィールドに を掛けたい。10

ドット表記のみを使用:

{
    $mul: {
        'results.score': NumberInt(10)
    }
}

エラーを返します:

Cannot create field 'score' in element {results: [ { name: "foo", score: 10 }, { name: "bar" } ]}

新しい配列フィルターを使用してみました:

{
    $mul: {
        'results.$[result].score': NumberInt(10)
    }
}, {
    arrayFilters: [{
        'result.grade': {
            $exists: true
        }
    }]
}

これも私にエラーを与えます:

No array filter found for identifier 'result' in path 'results.$[result].score'

すべてのドキュメントにスコアフィールドを設定してゼロに設定できることはわかっていますが、それは解決策にはなりませんが、スコアがないということはまだスコアがないことを意味し、スコアがあり、です0

  1. これはできますか?
  2. バージョン 3.6 より前のバージョンでこれを行うことはできますか?
4

0 に答える 0