মঙ্গোডিবি প্রতিটি ডাটাবেস ফেলে দেয়


97

আমি জানতে চাই যে আমার মঙ্গোডিবি থেকে প্রতিটি ডাটাবেস ফেলে দেওয়ার জন্য একটি আদেশ আছে কিনা?

আমি জানি যে আমি যদি কেবল একটি ডেটাটেবল ছাড়তে চাই তবে আমাকে কেবল নীচের কোডের মতো ডাটাবেসের নাম টাইপ করতে হবে তবে আমি এটি নির্দিষ্ট করতে চাই না।

mongo DB_NAME --eval 'db.dropDatabase();'

উত্তর:


144

আপনি একটি জাভাস্ক্রিপ্ট লুপ তৈরি করতে পারেন যা কাজটি করে এবং তারপরে এটি মঙ্গোকনসোলে চালায়।

var dbs = db.getMongo().getDBNames()
for(var i in dbs){
    db = db.getMongo().getDB( dbs[i] );
    print( "dropping db " + db.getName() );
    db.dropDatabase();
}

এটি dropall.js এ সংরক্ষণ করুন এবং তারপরে কার্যকর করুন:

mongo dropall.js

13
var mongo = db.getMongo(); mongo.getDBNames().forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });
tjmehta

4
আপনি কেবল উপরের কোডটি পেস্ট অনুলিপি করতে এবং এটি মঙ্গো কনসোলে টাইপ করতে পারেন।
বিবেক পান্ডে

4
এটি আমার সিস্টেমের ডাটাবেসগুলি ফেলেছে (মঙ্গো সংস্করণ ২.৪.৩)) এটিকে আবার কাজ করতে আমাকে মোংডোব প্রক্রিয়া পুনরায় চালু করতে হয়েছিল।
ফেলিক্স শ্মিট

7
আমার মনে হয় যখন কেউ তাদের ডাটাবেসগুলি ফেলে দিতে চান তারা প্রশাসক এবং স্থানীয়ের মতো মঙ্গো অভ্যন্তরীণ ডাটাবেসগুলি ফেলে দিতে চান না।
carlin.scott

এছাড়াও, কনফিগারেশন ডাটাবেস, যেখানে লেনদেনগুলি সংরক্ষণ করা হয়।
রদ্রিগো পেরেইরা ফ্রেগা

106

এই আদেশটি ব্যবহার করে দেখুন:

mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'

4
দুর্দান্ত কাজ করে এবং এর জন্য আপনাকে কোনও জেএস ফাইল তৈরি করতে হবে না। ভাল লাগল
এরিক হান

এটি লোড করার জন্য সিমেট্রিক কী?
এনএইচ

এই পদ্ধতির সাথে একটি সমস্যা যা আমি সবেমাত্র পেয়েছি তা হ'ল ডিবি ভার্সনটি মঙ্গো কনসোল সেশনের মাধ্যমে অব্যাহত থাকে তাই যদি কেউ ডাটাবেসের কোনওটির সাথে ইন্টারঅ্যাক্ট করে থাকে তবে তা db.getSiblingDB কল দ্বারা বাদ দেওয়া হবে।
carlin.scott

4
ভাল লাগল এটি ডকারের জন্য উপযুক্ত: ডিdocker exec mongodb sh -c "mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'"
পেরেজ্মলাল

আমি একই ইস্যুটি দিয়েছিলাম এবং আমি জানতে পেরেছি যে এটি অটোমেশন কাজের জন্য সেরা সমাধান। আপনি নতুন ফাইল লিখতে এবং সিআই / সিডি পাইপলাইনে ডাউনলোড করতে আগ্রহী নন তাই ওয়ান-লাইনার স্ক্রিপ্টটি পরিচালনা করা খুব সহজ
কারমাইন ইঙ্গালদি

22

আপনি একটি সাধারণ মঙ্গো আদেশ দিয়ে এটি করতে পারেন:

db.adminCommand("listDatabases").databases.forEach( function (d) {
    if (d.name != "local" && d.name != "admin"  && d.name != "apiomat"  && d.name != "config")
        db.getSiblingDB(d.name).dropDatabase();
 })

প্রতিটি ডিবি-এর শর্ত থাকলে লেখার পরিবর্তে, আমরা একটি অ্যারে রাখতে পারি এবং একটি সূচকওফ করতে পারি।
শচীন গুপ্ত

7

এটি ড্রপ_সাল_ডবস.জেএস এ সংরক্ষণ করুন:

var databases = db.getMongo().getDBNames()
for(var i in databases){
    db = db.getMongo().getDB( databases[i] );
    if(db.getName() == "admin" || db.getName() == "local"){
        print("skipping db " + db.getName())
        continue
    }
    print( "dropping db " + db.getName() );
    db.dropDatabase();
}

এখন আপনি কার্যকর করতে পারেন:

mongo drop_all_dbs.js

এবং সমস্ত ডাটাবেস (অ্যাডমিন এবং স্থানীয় বাদে) বাদ দেওয়া হবে।

এই উত্তরটি ALOR এর একটির একটি অনুলিপি, কেবল সিস্টেম ডিবিএসের ড্রপ ঠিক করুন


6

@ ALoR এর উত্তরে যুক্ত করা, সুবিধার জন্য আপনি নিম্নলিখিতটি ~ / .mongorc.js এ রাখতে পারেন

function dropDatabases(){
    var mongo = db.getMongo();

    var dbNames = mongo.getDBNames();
    for (var i = 0; i < dbNames.length; i++) {
        var db = mongo.getDB( dbNames[i] );

        print( "Dropping database " + db.getName() + "..." );
        db.dropDatabase();
    }
}

তারপরে মঙ্গো শেল এ আপনি কেবল পারেন

dropDatabases()

ডক্স থেকে:

মোঙ্গো ব্যবহারকারীদের হোম ডিরেক্টরি থেকে মোংগোc.js ফাইলটি পড়বে inv ফাইলটিতে ব্যবহারকারীরা ভেরিয়েবলগুলি সংজ্ঞায়িত করতে, মঙ্গো শেল প্রম্পটটি কাস্টমাইজ করতে পারে বা শেলটি প্রবর্তন করার সময় তারা আপডেট করতে চান এমন তথ্য আপডেট করতে পারে।


আমি সমস্যাগুলি সংশোধন করার জন্য আপডেট করেছি। চিমিং করার জন্য ধন্যবাদ!
btiernay

4

আপনি সি # অফিসিয়াল ড্রাইভারের মাধ্যমে এটি সহজেই করতে পারেন:

var _mongoServer = MongoServer.Create("mongodb://localhost:27020");

var names = _mongoServer.GetDatabaseNames();
foreach (var name in names)
{
   _mongoServer.DropDatabase(name);
}

হ্যাঁ এটি ধারণা হতে পারে তবে আমি সি # ছাড়াই এটি করতে চাই। (ওহ দুঃখিত, আমি এই প্রশ্নের জন্য ট্যাগ সি # ব্যবহার করেছি)
জন

আপনি একটি জাভাস্ক্রিপ্ট লুপ তৈরি করতে পারেন যা কাজটি করে এবং তারপরে এটি মঙ্গোকনসোলে চালায়।
ALOR

4
@ অ্যান্ড্রুআরসিচ এবং @ জনস্মিত আমি স্ক্রিপ্ট পোস্ট করেছি।
ALOR

2

var mongo = db.getMongo(); mongo.getDBNames().filter(n => n != 'admin' && n != 'local' && n != 'config').forEach(function (dbname) { var db = mongo.getDB(dbname); db.dropDatabase(); });

এইটি মঙ্গোশেলে অনুলিপি করা ও চালানো নিরাপদ। উপরের সমস্ত উত্তরের ক্রেডিট। পাশাপাশি 'কনফিগারেশন' ডাটাবেসও বাদ দিন।


-2

এটা যেমন সহজ

mongo --eval 'db.dropDatabase()'

অথবা, আপনি আপনার টার্মিনালে একটি মোঙ্গো সেশন শুরু করতে পারেন এবং লিখতে পারেন

db.dropDatabase()

যা হুবহু একই রকম।


প্রশ্নটি হল যে সমস্ত ডেটাবেস কীভাবে পৃথক করা যায় না
রব এইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.