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

Làm cách nào để thay đổi tất cả các phần tử mảng trong tài liệu mongodb thành một giá trị nhất định?

Cách tốt nhất để làm điều này là so khớp phần tử mảng và cập nhật riêng lẻ với vị trí $ sử dụng toán tử Bulk() API. Bạn thực sự không nên thổi qty của mình mảng.

var bulk = db.mycollection.initializeOrderedBulkOp(),   
    count = 0;

db.mycollection.find({ "code" : "efg" }).forEach(function(doc){ 
    var qty = doc["qty"]; 
    for (var idx = 0; idx < qty.length; idx++){ 
        bulk.find({ 
            "_id": doc._id, 
            "qty": { "$elemMatch": { "num": qty[idx]["num"]}}
        }).update({ "$set": { "qty.$.num": 0 }})
    }     
    count++;  
    if (count % 200 == 0) { 
        // Execute per 200 operations and re-init.
        bulk.execute(); 
        bulk = db.mycollection.initializeOrderedBulkOp(); 
    } 
})

// Clean up queues
if (count % 200 != 0)
    bulk.execute(); 



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ atanh

  2. MongoDB:Đang cập nhật subocument

  3. Khởi tạo toàn cầu không thành công:BadValue Không hợp lệ hoặc không có ngôn ngữ người dùng được đặt. Hãy đảm bảo các biến môi trường LANG và / hoặc LC_ * được đặt chính xác

  4. Làm cách nào để trả lại định dạng ngày ISO trong PHP cho MongoDB?

  5. tra cứu trong tổng hợp mongodb