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

2つの一致があるネストされたドキュメント配列mongodbから特定の要素を更新します

    デモ- https://mongoplayground.net/p/VaE28ujeOPx

    $(更新) を使用します

    db.collection.update({
      "notes": {
        "$elemMatch": { "block": 2, "curse": 5 }
      }
    },
    {
      $set: { "notes.$.score.b4": 40 }
    })
    

    upsert を読む :true

    更新

    デモ- https://mongoplayground.net/p/iQQDyjG2a_B

    $function を使用します

    db.collection.update(
        { "_id": "sad445" },
        [
          {
            $set: {
              notes: {
                $function: {
                  body: function(notes) {
                            var record = { curse:5, block:2, score:{ b4:40 } };
                            if(!notes || !notes.length) { return [record]; } // create new record and return in case of no notes
                            var updated = false;
                            for (var i=0; i < notes.length; i++) {
                                if (notes[i].block == 2 && notes[i].curse == 5) { // check condition for update
                                    updated = true;
                                    notes[i].score.b4=40; break; // update here
                                }
                            }
                            if (!updated) notes.push(record); // if no update push the record in notes array
                            return notes;
                        },
                  args: [
                    "$notes"
                  ],
                  lang: "js"
                }
              }
            }
          }
        ]
    )
    


    1. MongoDB:@DBRefによるクエリ

    2. MongoDB-$ sizeの引数は配列である必要がありますが、タイプはEOO/missingでした

    3. mongodbから翡翠にデータを表示しようとしています

    4. Nodejs / Express-アプリの起動:express.createServer()は非推奨です