sql >> Database >  >> NoSQL >> MongoDB

Hoe verander je alle array-elementen in een mongodb-document in een bepaalde waarde?

De beste manier om dit te doen, is door het array-element te matchen en afzonderlijk bij te werken met de positionele $ operator met de Bulk() API. Je moet je qty echt niet opblazen array.

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 pubsub berichtenwachtrij maar met terugbellen, zoals in ZeroMQ

  2. Fout:Opnieuw verbinding maken met 127.0.0.1:6379 mislukt - verbind ECONNREFUSED 127.0.0.1:6379

  3. Hoe controleer ik of redis actief is voordat ik flask start (en start het als dit niet het geval is)?

  4. MongoDB-aggregatievergelijking:group(), $group en MapReduce