मेरे पास पहले से मौजूद 200 डेटा वाला एक उपयोगकर्ता संग्रह है और मैं स्कीमा में createAt फ़ील्ड सेट करना भूल गया

अब मैं सभी मौजूदा फ़ील्ड को अपडेट करना चाहता हूं और (_id) का उपयोग करके डेटाबेस में जोड़ना चाहता हूं जो पहले से ही टाइमस्टैम्प है

तो मैं बस एक प्रश्न चाहता हूं जो _id लेता है और तिथि में परिवर्तित होता है और अस्तित्व में डेटा में सहेजता है (मैं रोबो 3T का उपयोग कर रहा हूं)

कृपया क्षमा करें यदि मैंने मूर्खतापूर्ण प्रश्न पूछा है। मैं मोंगोडब के लिए नया हूँ

0
Jigar 24 पद 2019, 19:06

2 जवाब

सबसे बढ़िया उत्तर

यह रोबो मोंगो क्वेरी है, यह मोंगो कंसोल में काम नहीं करेगा।

db.getCollection('collectionNameGoesHere').find({}, {
    _id: 1
}).forEach(function (doc) {
    db.getCollection('collectionNameGoesHere').update({
        _id: doc._id
    }, {
        $set: {
            createdAt: doc._id.getTimestamp()
        }
    }, {
        upsert: false,
        multi: true
    })
});
1
Alok Deshwal 24 पद 2019, 17:28

_id से दिनांक/टाइमस्टैम्प के साथ createdAt फ़ील्ड बनाने के लिए आप इनमें से किसी भी दो प्रश्नों का उपयोग कर सकते हैं। पहला मोंगोडीबी संस्करण 4.0+ और दूसरा मोंगोडीबी संस्करण 4.2 के साथ काम करता है।

इन कार्यों को मोंगो शेल में नोट करें, और robo3T में परीक्षण नहीं किया गया है।

db.test.aggregate( [
  { 
      $project: { createdAt: { $toDate: "$_id" } } 
  }
] ).forEach( doc => db.test.updateOne( { _id: doc._id }, { $set: { createdAt: doc.createdAt } } ) )


db.test.updateMany(
  { },
  [
      { $set: { createdAt: { $toDate: "$_id" } } }
  ]
)
0
prasad_ 25 पद 2019, 07:29