উত্তর:
এটি ব্যবহার করে দেখুন: যদি আপনার সংগ্রহটি 'উদাহরণ' হয়ে থাকে
db.example.update({}, {$unset: {words:1}}, false, true);
এটি উল্লেখ করুন:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset
আপডেট :
উপরের লিঙ্কটি আর 'set আনসেট' না করে coversেকে রাখে। {multi: true}
আপনি যদি সংগ্রহের সমস্ত দস্তাবেজ থেকে এই ক্ষেত্রটি সরাতে চান তবে যোগ করতে ভুলবেন না ; অন্যথায় এটি মিলবে এমন প্রথম দস্তাবেজ থেকে এটি কেবল সরিয়ে ফেলবে। আপডেট করা ডকুমেন্টেশনের জন্য এটি দেখুন:
https://docs.mongodb.com/manual/reference/operator/update/unset/
উদাহরণ:
db.example.update({}, {$unset: {words:1}} , {multi: true});
tags.words
হওয়া উচিত $unset
, তাই না words
? সালভাদোর ডালির উত্তরও দেখুন।
updateMany
পরিবর্তেও ব্যবহার করতে পারেন {multi:true}
, অর্থাৎdb.example.updateMany({},{"$unset":{words:""}})
প্রথমদিকে, কেন আমি প্রশ্নটির অনুগ্রহ পেয়েছি তা পাইনি (আমি ভেবেছিলাম যে প্রশ্নের উত্তরের উত্তর আছে এবং যুক্ত করার মতো কিছুই নেই) তবে আমি লক্ষ্য করেছিলাম যে উত্তরটি 15 বার গৃহীত হয়েছিল এবং আপলোড করা হয়েছিল তা আসলেই ভুল ছিল!
হ্যাঁ, আপনাকে $unset
অপারেটরটি ব্যবহার করতে হবে , তবে এই আনসেটটি শব্দের কীটি সরিয়ে ফেলবে যা কোনও সংকলনের জন্য কোনও দস্তাবেজের জন্য বিদ্যমান নেই। সুতরাং মূলত এটি কিছুই করবে না।
সুতরাং আপনাকে মোংগোকে ডকুমেন্ট ট্যাগগুলি এবং তারপরে ডট নোটেশন ব্যবহার করে শব্দগুলি দেখতে বলা উচিত । সুতরাং সঠিক জিজ্ঞাসা হয়।
db.example.update(
{},
{ $unset: {'tags.words':1}},
false, true
)
কেবলমাত্র সমাপ্তির খাতিরে, আমি এটি করার অন্য একটি উপায়ের বিষয়ে উল্লেখ করব , যা আরও খারাপ, তবে আপনি কোনও কাস্টম কোড (এমনকি এই দস্তাবেজ থেকে অন্য কোনও ক্ষেত্রের উপর ভিত্তি করে) দিয়ে ক্ষেত্রটি পরিবর্তন করতে পারেন।
মংগোডিবিতে ক্ষেত্রটি সরাতে বা মুছতে
একক রেকর্ডের জন্য
db.getCollection('userData').update({}, {$unset: {pi: 1}})
মাল্টি রেকর্ডের জন্য
db.getCollection('userData').update({}, {$unset: {pi: 1}}, {multi: true})
আমি এর অনুরূপ কিছু করার চেষ্টা করছিলাম তবে এর পরিবর্তে এমবেডড ডকুমেন্ট থেকে কলামটি সরিয়ে ফেললাম। সমাধান পেতে আমাকে কিছুটা সময় নিয়েছে এবং এটিই আমি প্রথম পোস্টটি পেয়েছিলাম যাতে আমি ভাবলাম যে অন্য কারও জন্য এটি করার চেষ্টা করছে আমি এই পোস্ট করব।
সুতরাং এর পরিবর্তে আপনার ডেটাটি দেখতে বলে দিন:
{
name: 'book',
tags: [
{
words: ['abc','123'],
lat: 33,
long: 22
}, {
words: ['def','456'],
lat: 44,
long: 33
}
]
}
words
এম্বেড করা দস্তাবেজ থেকে কলামটি সরাতে , এটি করুন:
db.example.update(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}},
{multi: true}
)
বা ব্যবহার করে updateMany
db.example.updateMany(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}}
)
$unset
শুধুমাত্র এটি সম্পাদনা যদি মান বিদ্যমান কিন্তু এটি একটি নিরাপদ গৌণ করব না (যদি এটি পরীক্ষা অভ্যস্ত tags
প্রথম বিদ্যমান) যাতে বিদ্যমান এমবেডেড দস্তাবেজে প্রয়োজন হয়।
এটি সমস্ত অবস্থানিক অপারেটর ( $[]
) ব্যবহার করে যা সংস্করণ 3.6 এ চালু হয়েছিল
ডিফল্টরূপে, আপডেট () পদ্ধতিটি একটি একক দস্তাবেজ আপডেট করে। ক্যোয়ারীর মানদণ্ডের সাথে মেলে এমন সমস্ত দস্তাবেজ আপডেট করতে মাল্টি প্যারামিটার সেট করুন।
সংস্করণ 3.6 এ পরিবর্তিত হয়েছে। বাক্য গঠন :
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ <filterdocument1>, ... ]
}
)
উদাহরণ:
db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})
আপনার উদাহরণে:
db.getCollection('products').update({},{$unset: {'tags.words' :1}}, {multi: true})
শুরু হচ্ছে Mongo 4.2
, কিছুটা আলাদা সিনট্যাক্স ব্যবহার করাও সম্ভব:
// { name: "book", tags: { words: ["abc", "123"], lat: 33, long: 22 } }
db.collection.update({}, [{ $unset: ["tags.words"] }], { many: true })
// { name: "book", tags: { lat: 33, long: 22 } }
আপডেটের পদ্ধতি এছাড়াও একটি অ্যাগ্রিগেশন পাইপলাইন গ্রহণ করতে পারে (অ্যাগ্রিগেশন পাইপলাইন ব্যবহার বোধক স্কোয়ারড বন্ধনী নোট)।
এর অর্থ হ'ল $unset
অপারেটরটি হ'ল সমষ্টি এক ( "ক্যোয়ারী" এর বিপরীতে ), যার বাক্য গঠনটি ক্ষেত্রগুলির একটি অ্যারে নেয়।
পাইমঙ্গো (পাইথন মঙ্গো) এর সমাধান:
db.example.update({}, {'$unset': {'tags.words':1}}, multi=True);
যেহেতু আমি মোঙ্গোইজাইন ব্যবহার করে কোনও ক্ষেত্র সরানোর কোনও উপায় অনুসন্ধান করতে গিয়ে এই পৃষ্ঠাটি সন্ধান করেছি, আমার ধারণা, এটি মঙ্গোইজাইন উপায়ে পোস্ট করাও সহায়ক হতে পারে:
Example.objects.all().update(unset__tags__words=1)
{নাম: 'বই', ট্যাগ্স: {শব্দ: ['এবিসি', '123'], ল্যাট: 33, দীর্ঘ: 22}
উত্তর:
db.tablename.remove ({ 'tags.words': [ 'ABC', '123']})
"শব্দ" আছে কিনা তা পরীক্ষা করে এবং তারপরে দস্তাবেজ থেকে সরানো হচ্ছে
db.users.update({"tags.words" :{$exists: true}},
{$unset:{"tags.words":1}},false,true);
সত্য মিলে গেলে একাধিক ডকুমেন্ট আপডেট করার ইঙ্গিত দেয়।
আপনি এই প্রকল্পটি 3.4 এ ব্যবহার করে একীকরণেও করতে পারেন
$ $ প্রকল্প: tag "ট্যাগস.ওয়ার্ডস": 0}