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

配列サイズのフィールドをmongoに挿入します

    .aggregate()> $ projectへのメソッド ドキュメントを返送し、 $ sizeを返します。 アイテム配列の。その後、 .forEach ループと $ set "Bulk" を使用したドキュメントのitemTotalフィールド 最大の効率のための操作。

    var bulkOp = db.myDocument.initializeUnorderedBulkOp(); 
    var count = 0;
    
    db.myDocument.aggregate([
        { "$match": { 
            "itemsTotal": { "$exists": false } ,
            "items": { "$exists": true }
        }}, 
        { "$project": { "itemsTotal": { "$size": "$items" } } }
    ]).forEach(function(doc) { 
            bulkOp.find({ "_id": doc._id }).updateOne({ 
                "$set": { "itemsTotal": doc.itemsTotal }
            });
            count++;
            if (count % 200 === 0) {
                // Execute per 200 operations and re-init
                bulkOp.execute();
                bulkOp = db.myDocument.initializeUnorderedBulkOp();
            }
    })
    
    // Clean up queues
    if (count > 0) { 
        bulkOp.execute();
    }
    


    1. docker-composeを使用するときにmongodbイメージに--authを追加する方法は?

    2. MongoDbでネストされた配列をクエリします

    3. MongodbAggregationフレームワークはmap/reduceよりも高速ですか?

    4. mongodbでgroupbyを使用してMax()を選択します