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

mongodbのオブジェクトの配列の配列を検索する方法

    awaitingを検索するとします。 コレクションusersのステータス

    db.users.find({"version.files.status":"awaiting"}).pretty()
    

    アレイ内を自動的に検索します。

    ただし、更新は少し異なり、arrayFilter<を使用する必要があります。 / a> :

    db.users.updateOne(
      {
        "version.files._id": "606592b3c5d509071857f6e8",
      },
      {
        $set: {
          "version.$[version].files.$[file].url": "something else",
        },
      },
      {
        arrayFilters: [
          { "version._id": "606592b1c5d509071857f6e7" },
          { "file._id": "606592b3c5d509071857f6e8" },
        ],
      }
    );
    

    findにインデックスがあることを確認してください クエリ:

    上記の例の場合

    db.users.createIndex({"version.files._id":1},{background:true})
    

    MongoDoc で利用できるその他の例

    編集

    あなたのコメントによると、ここに実際の例があります:

    db.users.findOneAndUpdate(
      { "version.files._id": "606592b3c5d509071857f6e8" },
      {
        $set: {
          "version.$[version].files.$[file].url": "Test URL",
          "version.$[version].files.$[file].status": "Test status",
        },
      },
      {
        returnNewDocument: true,
        arrayFilters: [
          { "version._id": "606592b1c5d509071857f6e7" },
          { "file._id": "606592b3c5d509071857f6e8" },
        ],
      }
    );
    



    1. 配列フィールドの値がここにあるアクティブレコードクエリ

    2. マングースモデルでメソッドを定義するにはどうすればよいですか?

    3. 条件に一致するネストされた配列の最初の要素を検索します

    4. エラスティックBeanstalkにmongodbをインストールするための推奨される方法