মঙ্গোডিবি: একটি ক্ষেত্রের প্রতিটি দস্তাবেজ আপডেট করুন


214

fooহাইপোথটিকালি নামে আমার একটি সংগ্রহ রয়েছে ।

প্রতিটি উদাহরণের fooসর্বশেষ লুকডএট নামে একটি ক্ষেত্র রয়েছে যা যুগের পর থেকে একটি ইউনিক্স টাইমস্ট্যাম্প। আমি মঙ্গোডিবি ক্লায়েন্টের মধ্য দিয়ে যেতে সক্ষম হয়ে বর্তমান টাইমস্ট্যাম্পে বিদ্যমান বিদ্যমান সমস্ত নথির (প্রায় 20,000) জন্য টাইমস্ট্যাম্প সেট করতে সক্ষম হতে চাই।

এটি পরিচালনা করার সেরা উপায় কী?


উত্তর:


458

সংস্করণ নির্বিশেষে, উদাহরণস্বরূপ, <update>হ'ল:

{  $set: { lastLookedAt: Date.now() / 1000 }  }

যাইহোক, আপনার মঙ্গোডিবি সংস্করণের উপর নির্ভর করে কোয়েরিটি অন্যরকম দেখাচ্ছে। সংস্করণ নির্বিশেষে, মূলটি হ'ল খালি শর্তটি {}কোনও নথির সাথে মিলবে । মঙ্গো শেল বা কোনও মঙ্গোডিবি ক্লায়েন্টের সাথে:

$ সংস্করণ> = 3.2 :

db.foo.updateMany( {}, <update> )
  • {} শর্তটি (খালি শর্তটি কোনও নথির সাথে মেলে)

3.2> $ সংস্করণ> = 2.2 :

db.foo.update( {}, <update>, { multi: true } )
  • {} শর্তটি (খালি শর্তটি কোনও নথির সাথে মেলে)
  • {multi: true} "আপডেট একাধিক ডকুমেন্ট" বিকল্প

$ সংস্করণ <2.2 :

db.foo.update( {}, <update>, false, true )
  • {} শর্তটি (খালি শর্তটি কোনও নথির সাথে মেলে)
  • false" upsert " পরামিতি জন্য
  • true "মাল্টি" প্যারামিটারের জন্য (একাধিক রেকর্ড আপডেট করুন)


এটি এখনও আমাকে একটি তারিখ দিচ্ছে যা ফু এর এই সমস্ত দৃষ্টান্তের কাছে ঠিক নেই। চালানোর পরে আমি একটি db.foo.findOne () এবং লাস্টলুকডএট করি: 1327691719186, যা জুরবি -১. 1..৫: 011> টাইম.এট (1327691719186) তে অনুবাদ করে => সান নভেম্বর 16 02:19:46 -0500 44042
এলোমেলোনাট

1
আমার খারাপ, পসিক্স সময় সেকেন্ড ব্যবহার করে, যেখানে জাভাস্ক্রিপ্ট সময়টি মিলি সেকেন্ড ব্যবহার করে। তারিখ.নো () / 1000 এর কাজ করা উচিত। আপনি এটি গোল করতে পারে।
ফিলিপ প্ল্যান্টিয়ার

psh এটি যে শূন্য {} এটি আমার জন্য করেছে, ফিলকে ধন্যবাদ
জোনা

1
পুরানো মূল্য + "কিছু স্ট্রিং" এর জন্য এটি কীভাবে করবেন
মহেশ কে

11

এই কোডটি আপনার জন্য সহায়ক হবে

        Model.update({
            'type': "newuser"
        }, {
            $set: {
                email: "abc@gmail.com",
                phoneNumber:"0123456789"
            }
        }, {
            multi: true
        },
        function(err, result) {
            console.log(result);
            console.log(err);
        })  

4

আমি এখন একমাস ধরে মঙ্গোডিবি। নেট ড্রাইভার ব্যবহার করছি। আমি যদি নেট। ড্রাইভার ব্যবহার করে এটি করি, আমি সংগ্রহের অবজেক্টে আপডেট পদ্ধতিটি ব্যবহার করব। প্রথমত, আমি এমন একটি ক্যোয়ারী তৈরি করব যা আমাকে আগ্রহী সমস্ত নথি আমাকে পেয়ে যাবে এবং আমি যে ক্ষেত্রগুলি পরিবর্তন করতে চাই তার উপর একটি আপডেট করব। মোঙ্গোতে আপডেট কেবল প্রথম দস্তাবেজকে প্রভাবিত করে এবং কোয়েরির ফলে প্রাপ্ত সমস্ত নথি আপডেট করতে একটিকে 'মাল্টি' আপডেট পতাকা ব্যবহার করতে হবে। নমুনা কোড অনুসরণ করে ...

var collection = db.GetCollection("Foo");
var query = Query.GTE("No", 1); // need to construct in such a way that it will give all 20K //docs.
var update = Update.Set("timestamp", datetime.UtcNow);
collection.Update(query, update, UpdateFlags.Multi);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.