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

mongodbのネストされた配列要素を更新します

    クエリにはいくつかの修正が必要です。それ以外の場合はほとんど修正が必要です。 $elemMatchが原因で、更新が機能していません attributeSetの場合 (ドキュメントの配列)フィールドは idで発生します attributeSet.id ではなく、フィルタリングするドキュメントのプロパティ 、それが何であるかを理解していません。また、ネストされたelemMatchは必要ありません。ドット表記を使用するだけです

    デバッグするには、検索クエリで試してみてください。

    クエリ(シェル):

    db.collection.findOneAndUpdate(
      {
        _id: settingsToBeUpdated._id,
        attributeSet: {
          $elemMatch: {
            id: attributeSetId,
            "attributes.id": id
          }
        }
      },
      {
        $set: {
          "attributeSet.$[as].attributes.$[a].attributeName":
            attributeDto.attributeName,
          "attributeSet.$[as].attributes.$[a].defaultValue":
            attributeDto.defaultValue,
          "attributeSet.$[as].attributes.$[a].isRequired": attributeDto.isRequired
        }
      },
      {
        arrayFilters: [{ "as.id": attributeSetId }, { "a.id": id }],
        returnNewDocument: true
      }
    );
    



    1. Redisコンテナを別のコンテナに接続する(Docker)

    2. Mongodbキーを使用して回避するものには、を含めることはできません。または$?

    3. Redisでの実行/スケジューリングの遅延?

    4. play2アプリケーションでネストされたreactivemongo呼び出しをどのように構成する必要がありますか?