MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

संयोजित क्षेत्रों के परिणाम का उपयोग करके दस्तावेज़ को अपडेट करें

आपको .aggregate() विधि जो एकत्रीकरण पाइपलाइनों तक पहुंच प्रदान करती है।

आपके $project में चरण आपको $concat अपने क्षेत्र को जोड़ने के लिए ऑपरेटर।

फिर आप "bulk"<का उपयोग करके अपने संग्रह को अपडेट करने के लिए अपने एकत्रीकरण परिणाम का उपयोग कर सकते हैं। /ए> दक्षता के लिए संचालन

var bulk = db.events.initializeOrderedBulkOp(); 
var count = 0;
db.events.aggregate([
    { "$project": {
        "iso_start": { "$concat": [ "$date", " ", "$time" ] }, 
        "iso_end": { "$concat": [ "$date", " ", "$endtime" ] }    
    }}
]).forEach(function(doc) { 
    bulk.find({'_id': doc._id}).updateOne({
        "$set": {
            "iso_start": new Date(doc.iso_start),
            "iso_end": new Date(doc.iso_end)
        }
    }); 
    count++; 
    if(count % 200 === 0) { 
        // update per 200 operations and re-init
        bulk.execute();     
        bulk = db.events.initializeOrderedBulkOp(); 
    } 
})
// Clean up queues
if(count > 0) bulk.execute();

इस ऑपरेशन के बाद आपके दस्तावेज़ कुछ इस तरह दिखाई देंगे:

{
        "_id" : "aaaaaaaaaaaa",
        "title" : "Hello, World!",
        "date" : "Thursday, November 12, 2015",
        "time" : "9:30 AM",
        "endtime" : "11:30 AM",
        "iso_start" : ISODate("2015-11-12T06:30:00Z"),
        "iso_end" : ISODate("2015-11-12T08:30:00Z")
}
{
        "_id" : "bbbbbbbbbbbb",
        "title" : "To B or not to B",
        "date" : "Thursday, November 12, 2015",
        "time" : "10:30 AM",
        "endtime" : "11:00 AM",
        "iso_start" : ISODate("2015-11-12T07:30:00Z"),
        "iso_end" : ISODate("2015-11-12T08:00:00Z")
}

यह कहानी का अंत नहीं है क्योंकि "बल्क" आगामी रिलीज (संस्करण 3.2 ) में एपीआई और उसके संबंधित तरीकों को हटा दिया गया है, इस प्रकार उस संस्करण से हमें db.collection.bulkWrite() विधि।

var operations = [];
db.events.aggregate([
    { "$project": {
        "iso_start": { "$concat": [ "$date", " ", "$time" ] }, 
        "iso_end": { "$concat": [ "$date", " ", "$endtime" ] }    
    }}
]).forEach(function(doc) {
    var operation = {
        updateOne: { 
            filter: { "_id": doc._id }, 
            update: { 
                "$set":  { 
                   "iso_start": new Date(doc.iso_start),
                   "iso_end": new Date(doc.iso_end)
                }
            }
        }
    }; 
    operations.push(operation); 
})
operations.push({ ordered: true, writeConcern: { w: "majority", wtimeout: 5000 } });
db.events.bulkWrite(operations)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. django + पायमोंगो पूलिंग का सर्वोत्तम अभ्यास?

  2. MongoDB में ऑब्जेक्ट या स्ट्रिंग के रूप में _Id स्टोर करें?

  3. (नोड:71307) [डीईपी0079] पदावनत चेतावनी

  4. मोंगोडब क्वेरी नेस्टेड संरचना

  5. mongoengine के साथ GridFs के बजाय DEFAULT_FILE_STORAGE पर फ़ाइलें अपलोड करें