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

Mongodb:条件が満たされた場合、要素をネストされた配列にプッシュします

    ここでの問題は、コピュラのことを誤解していることです。

    "outerArray.field.innerArray": { $in: [ 1, 3 ] } クエリに、innerArrayだけを取得しているわけではありません ここで、1または3があります。これらのアレイが存在するドキュメントを取得しています。

    つまり、ドキュメント全体をクエリしているのです。

    arrayFilterを使用する必要があります フィルタが一致したときに値を更新します。

    したがって、私があなたを正しく理解している場合、必要なクエリは次のとおりです。

    db.collection.update(
    {}, //Empty object to find all documents
    {
      $push: { "outerArray.$[elem].field.innerArray": 4 }
    },
    {
      "arrayFilters": [ { "elem.field.innerArray": { $in: [ 1, 3 ] } } ]
    })
    

    こちら

    updateへの最初のオブジェクトの方法に注意してください 空です。ドキュメント(配列やドキュメントではなく)と一致するフィールドをそこに配置する必要があります。

    1つのドキュメントのみを更新する場合は、最初のオブジェクト(クエリオブジェクト)に必要な値を入力する必要があります。例:{"_id": 11}




    1. フィルタされた配列アイテムだけでMongoDBのオブジェクトを取得する必要があります

    2. ansible mongodb_user、mongodb_replicasetモジュールはどのように機能しますか?

    3. MongoDBを使用したネストされた配列の更新

    4. Java Mongo DBドライバーバージョン3を使用してBasicDBObjectをMongoドキュメントに変換するにはどうすればよいですか?