MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да променя всички елементи на масива в документ mongodb на определена стойност?

Най-добрият начин да направите това е да съпоставите елемента на масива и да актуализирате поотделно с позиционния $ оператор с помощта на Bulk() API . Наистина не трябва да издухате qty масив.

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 с проста идентификация с парола

  2. java.lang.IncompatibleClassChangeError:Внедряване на клас Mongo

  3. Meteor - collection.find() винаги връща всички полета

  4. Mongo:намерете елементи, които нямат определено поле

  5. NodeJS + MongoDB:Получаване на данни от колекция с findOne ()