sql >> データベース >  >> NoSQL >> MongoDB

$ setとドット表記を使用して、対応する古い要素を使用して埋め込み配列要素を更新するにはどうすればよいですか?

    フィールドを選択して配列のメンバーである場合は、すべてを選択しています。

    {ar :[{"a" : 1}, {"a" : 2}]}
    
    "$ar.a" = [1 ,2]
    

    また、更新演算子と集計を混在させることはできません。$sites.$.energy_consumptionなどを使用することはできません。 、集計を行う場合は、$matchを除いて、集計演算子を使用する必要があります。 クエリ演算子を使用できるステージ。

    クエリ

    • $setFieldを使用した場合とは少し異なるソリューション
    • もっと速くなると思いますが、おそらくほとんど違いはありません
    • JavaScriptを使用する必要はありません。遅くなります
    • これは>=MongoDB 5ソリューション、$setField 新しい演算子です

    ここでコードをテスト

    aggregate(
    [{"$set":
      {"sites":
       {"$map":
        {"input":"$sites",
         "in":
         {"$setField":
          {"field":"new_field",
           "input":"$$this",
           "value":"$$this.energy_consumption"}}}}}}]
    )
    


    1. PythonRedisからRedisDBをフラッシュするにはどうすればよいですか?

    2. 特定のテストでflapdoodle埋め込みmongodbを無効にする方法

    3. mongodbで子オブジェクトをクエリする方法

    4. ネストされたルックアップを含むMongodbAggregateComplex Document