উত্তর:
বিদ্যমান সংগ্রহ ক্ষেত্রটি আপডেট $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
নির্দিষ্ট করে । upsert
multi
উপস্থাপন করুন: যদি সত্যে সেট করা থাকে, কোনও দস্তাবেজ ক্যোয়ারীর মানদণ্ডের সাথে মেলে না এমন একটি নতুন ডকুমেন্ট তৈরি করে।
একাধিক: যদি সত্যে সেট করা থাকে, একাধিক ডকুমেন্ট আপডেট করে যা ক্যোয়ারীর মানদণ্ডে মেলে। যদি মিথ্যাতে সেট করা থাকে তবে একটি দস্তাবেজ আপডেট করুন।
এটি মঙ্গোর 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.