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

mongodbアップデートプッシュアレイ

    ネイティブのmongodbライブラリを使用して、要素を配列にプッシュしようとする人が可能になりました。

    次のmongodbコレクションオブジェクトを検討する

    { 
    "_id" : 5,
    "attachments": [
        { 
            "id": "xxxxxxx",
            "subtype": "book",
            "title": "xxxx",
            "body": "xxxx" ,
            "filetype" : "xxxxx"
        },
        {
            "id": "xxxxxxx",
            "subtype": "book",
            "title": "xxxx",
            "body": "xxxx",
            "filetype": "xxxxx"
        }
    ]
    }
    
    
     arr = [{
     'id':'123456',
     'subtype':'book',
     'title'  : 'c programing',
     'body'  :' complete tutorial for c',
     'filetype' : '.pdf'
     },
    {
     'id':'123457',
     'subtype':'book',
     'title'  : 'Java programing',
     'body'  :' complete tutorial for Java',
     'filetype' : '.pdf'
     }
    ];
    

    次のクエリを使用して、配列要素を最後の「添付ファイル」にプッシュできます。これには$pushまたは$addToSetを使用できます。

    これにより、1つのオブジェクトまたは要素が添付ファイルに挿入されます

    db.collection('books').updateOne(
      { "_id": refid }, // query matching , refId should be "ObjectId" type
      { $push: { "attachments": arr[0] } } //single object will be pushed to attachemnts
     ).done(function (err, updElem) {
      console.log("updElem" + JSON.stringify(updElem));     
    });
    

    これにより、配列内の各オブジェクトが添付ファイルに挿入されます

       db.collection('books').updateOne(
         { "_id": refid }, // query matching , refId should be "ObjectId" type
         { $push: { "attachments":{$each: arr} } } // arr will be array of objects
         ).done(function (err, updElem) {
               console.log("updElem" + JSON.stringify(updElem));     
        });
    


    1. Mongodbの場合、フィルターの下で条件を作成する方法

    2. Mongodb選択したフィールドを取得して集計から返すようにしています

    3. MongoDBのISODate()とUNIXタイムスタンプ

    4. MongoDb検索パフォーマンス