উত্তর:
বিদ্যমান সংগ্রহ ক্ষেত্রটি আপডেট $setকরার সাথে সাথে নির্দিষ্ট ক্ষেত্রটি উপস্থিত না থাকলে একটি নতুন ক্ষেত্র যুক্ত করবে।
এই উদাহরণটি দেখুন:
> db.foo.find()
> db.foo.insert({"test":"a"})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> item = db.foo.findOne()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }
সম্পাদনা করুন:
আপনি যদি আপনার সমস্ত সংগ্রহে একটি নতুন_ফিল্ড যুক্ত করতে চান তবে আপনাকে খালি নির্বাচক ব্যবহার করতে হবে এবং সমস্ত ডকুমেন্ট আপডেট করার জন্য একাধিক পতাকা সত্য (শেষ প্যারাম) এ সেট করতে হবে
db.your_collection.update(
{},
{ $set: {"new_field": 1} },
false,
true
)
সম্পাদনা করুন:
উপরের উদাহরণে সর্বশেষ 2 টি ক্ষেত্রগুলি এবং পতাকাগুলি false, trueনির্দিষ্ট করে । upsertmulti
উপস্থাপন করুন: যদি সত্যে সেট করা থাকে, কোনও দস্তাবেজ ক্যোয়ারীর মানদণ্ডের সাথে মেলে না এমন একটি নতুন ডকুমেন্ট তৈরি করে।
একাধিক: যদি সত্যে সেট করা থাকে, একাধিক ডকুমেন্ট আপডেট করে যা ক্যোয়ারীর মানদণ্ডে মেলে। যদি মিথ্যাতে সেট করা থাকে তবে একটি দস্তাবেজ আপডেট করুন।
এটি মঙ্গোর versionsআগে ছিল 2.2। সর্বশেষ সংস্করণগুলির জন্য ক্যোয়ারীটি কিছুটা পরিবর্তন করা হয়েছে
db.your_collection.update({},
{$set : {"new_field":1}},
{upsert:false,
multi:true})
new_fieldস্ট্রিংয়ের দৈর্ঘ্যের সমান একটি int হতে চাই test।
স্পষ্ট করার জন্য, সিনট্যাক্সটি মঙ্গোডিবি সংস্করণ 4.0.x এর জন্য নিম্নরূপ:
db.collection.update({},{$set: {"new_field*":1}},false,true)
নিবন্ধ সংগ্রহের জন্য একটি প্রকাশিত ক্ষেত্র যুক্ত করা এবং ক্ষেত্রের মানটি সত্য হিসাবে নির্ধারণ করা এখানে একটি কার্যকারী উদাহরণ রয়েছে :
db.articles.update({},{$set: {"published":true}},false,true)
পাইমঙ্গো ৩.৯++
update()বর্তমানে অবচিত হয়েছে এবং আপনার ব্যবহার করা উচিত replace_one(), update_one()অথবা update_many()পরিবর্তে।
আমার ক্ষেত্রে আমি ব্যবহার করেছি update_many()এবং এটি আমার সমস্যার সমাধান করেছে:
db.your_collection.update_many({}, {"$set": {"new_field": "value"}}, upsert=False, array_filters=None)
নথি থেকে
update_many(filter, update, upsert=False, array_filters=None, bypass_document_validation=False, collation=None, session=None) filter: A query that matches the documents to update. update: The modifications to apply. upsert (optional): If True, perform an insert if no documents match the filter. bypass_document_validation (optional): If True, allows the write to opt-out of document level validation. Default is False. collation (optional): An instance of Collation. This option is only supported on MongoDB 3.4 and above. array_filters (optional): A list of filters specifying which array elements an update should apply. Requires MongoDB 3.6+. session (optional): a ClientSession.