MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chèn trường với kích thước mảng trong mongo

Bạn có thể sử dụng .aggregate() phương thức đến $project tài liệu của bạn và trả lại $size của mảng các mục. Sau đó, bạn sẽ cần lặp lại kết quả tổng hợp của mình bằng cách sử dụng .forEach vòng lặp và $set trường itemTotal cho tài liệu của bạn bằng cách sử dụng "Bulk" hoạt động để đạt hiệu quả tối đa.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để tôi có thể sử dụng sharedFilterExpression trên một mô hình mongoose

  2. Mongo Triple Compound Index

  3. Cập nhật phần tử mảng lồng nhau trong mongodb

  4. findAll không thành công sau khi chơi morphia được khởi động lại

  5. MongoDB Shards và tải tổng hợp không cân bằng