මගේ බාෂ් විමසුමෙන් මෙය කිරීමට ඇති පහසුම ක්රමය කුමක්ද?
මගේ බාෂ් විමසුමෙන් මෙය කිරීමට ඇති පහසුම ක්රමය කුමක්ද?
Answers:
මෙවැනි:
mongo <dbname> --eval "db.dropDatabase()"
විධාන රේඛාවෙන් කවචය ස්ක්රිප්ට් කිරීම පිළිබඳ වැඩි විස්තර: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
එය කළ හැකි හොඳම ක්රමය වන්නේ මොන්ගෝඩ් කොන්සෝලයෙනි:
> use mydb;
> db.dropDatabase();
විකල්පයක් ලෙස, ඔබට mongod
ඔබේ දත්ත නාමාවලියෙන් දත්ත ගොනු නවතා මකා දැමිය හැකිය , පසුව නැවත ආරම්භ කරන්න.
ඉඟිය: ඔබට දත්ත ගොනු උප ෆෝල්ඩරයකට ගෙන යා හැකි අතර ඔබට ඒවා තවදුරටත් අවශ්ය නොවන බව ඔබට විශ්වාස නම් ඒවා මකන්න.
use
.js ගොනුවේ විධාන භාවිතා කළ නොහැකි බව මතක තබා ගන්න, ඔබ කොන්ක්රීට් ඩීබී සමඟ සම්බන්ධ විය යුතුය (මොන්ගෝ විධානය සඳහා dbname සඳහන් කරන්න)
~/.dbshell
වී ඔබගේ විධාන ඉතිහාසය ඉවත් කිරීමට ගොනුව මකා දැමීමට අවශ්ය විය හැකිය . (ඉටු කරන බවට හොඳ ක්රමයක් ද ඇති විය හැක -. මට විශ්වාස නෑ) SQL සමග මෙන් නොව, mongo විධානය දත්ත ඉවත් කිරීමට, ඒ නිසා මම මේ ඇත්තටම හෙළන්නට දත්ත සමුදා නාමය කොටසක් නොවන - එය හුදෙක් පහළ බසී සේවාදායකයා දැනට සම්බන්ධ කර ඇති දත්ත සමුදාය. ඔබගේ විධාන ඉතිහාසය හිස් කිරීමෙන් ඔබ අහම්බෙන් dropDatabase
විධානය නැවත ධාවනය කිරීමෙන් සහ නොදැනුවත්වම දෙවන දත්ත සමුදාය අතහැර දැමීම වළක්වනු ඇත .
මෙය මතක තබා ගැනීම පහසු බව මට පෙනී ගියේය:
mongo //to start the mongodb shell
show dbs //to list existing databases
use <dbname> //the <dbname> is the database you'd like to drop
db //should show <dbname> just to be sure I'm working with the right database
db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }
ඔබට පාරම්පරික හෝ එවාල් අවශ්ය නොවේ , mongo
එයම පරිවර්තකයෙකු ලෙස ක්රියා කළ හැකිය.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
ගොනුව ක්රියාත්මක කර එය ක්රියාත්මක කරන්න.
.js
, එසේ නොමැතිනම් එය db ලිපිනය ලෙස අර්ථ දැක්විය හැකිය.
mongo filename
කරන්නේ අනවශ්යයි - ගොනුවට දැනටමත් ඉහළ පේළියේ පරිවර්තකයක් ඇත. ගොනුව ක්රියාත්මක කර එය ක්රියාත්මක කරන්න./filename
./filename
ඇත්ත වශයෙන්ම ක්රියාත්මක වේවි /usr/bin/env mongo filename
නේද? ඒ නිසා filename
එය අවසන් නොවන්නේ නම් .py
, මොන්ගෝ තර්කය ක්රියාත්මක කිරීමට පිටපතක් ලෙස හඳුනා නොගනී.
ps
.
ps
ඔබට ආයාචනා කරන අවස්ථාවේ ක්රියාත්මක වන්නේ කුමක්ද යන්න පමණක් පෙන්වයි ps
, exec
එම ස්ථානයට මඟ පෙන්වන ඇමතුම් දාමය හෝ ගොනුව පැටවීම සහ ක්රියාත්මක කිරීම සඳහා කර්නලය විසින් කර ඇති කාර්යයන් නොවේ. ඔබට ඇත්ත වශයෙන්ම සිදුවන්නේ කුමක්ද යන්න දැන ගැනීමට අවශ්ය නම්, ඔබ වටා එතීම ලිවිය යුතුය /usr/bin/env
, එය ෂෙබාං රේඛාවේ ක්රියාත්මක කළ හැකි ලෙස සකසා ඉන්පසු සියල්ල ඉවත් කරන්න strace
.
ඔබට "පාරම්පරික" භාවිතා කළ හැකිය:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
ප්රතිදානයේ ප්රති Results ල වැනි:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
ඔබට වඩාත් සංකීර්ණ විධාන අනුපිළිවෙලක් අවශ්ය නම්, මේ වගේ දේවල් සඳහා හෙරෙඩොක්ස් භාවිතා කිරීමට මම කැමතියි.
මොන්ගෝ ෂෙල් භාවිතයෙන් මොන්ගෝඩ් සඳහා සම්පූර්ණ මකාදැමීමේ මෙහෙයුම් කිහිපයක් මෙන්න
කිරීමට විශේෂයෙන් ලියවිල්ල මකා එකතු දී:db.mycollection.remove( {name:"stack"} )
කිරීමට සියලු ලිපි ලේඛන මකා එකතු දී: db.mycollection.remove()
කිරීමට delete එකතුව : db.mycollection.drop()
කිරීමට delete දත්ත සමුදාය : පළමු විසින් බව දත්ත යන්න use mydb
නම් විධානය සහ
db.dropDatabase()
කෙලින්ම විධාන විමසුමෙන් හෝ බ්ලාෂ් වලින්: mongo mydb --eval "db.dropDatabase()
වෙනත් ක්රමයක්:
echo "db.dropDatabase()" | mongo <database name>
පර්යන්තයක ක්රියාත්මක කරන්න:
mongo // To go to shell
show databases // To show all existing databases.
use <DATA_BASE> // To switch to the wanted database.
db.dropDatabase() // To remove the current database.
තවත් පර්යන්ත කවුළුවක් විවෘත කර පහත විධානයන් ක්රියාත්මක කරන්න,
mongodb
use mydb
db.dropDatabase()
එම මෙහෙයුමේ ප්රතිදානය පහත පරිදි වේ
MAC:FOLDER USER$ mongodb
> show databases
local 0.78125GB
mydb 0.23012GB
test 0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>
mydb
එය තවමත් භාවිතයේ පවතින බව කරුණාවෙන් සලකන්න , එම අවස්ථාවේ දී ඕනෑම ආදානයක් ඇතුළත් කිරීමෙන් දත්ත සමුදාය නැවත ආරම්භ වේ.
ජාවාස්ක්රිප්ට් භාවිතයෙන්, ඔබේ දත්ත සමුදාය අතහැර දැමීමට ඔබට පහසුවෙන් drop_bad.js ස්ක්රිප්ටයක් සෑදිය හැකිය :
නිර්මාණය drop_bad.js :
use bad;
db.dropDatabase();
මොන්ගෝ ෂෙල් භාවිතයෙන් ස්ක්රිප්ට් එක ක්රියාත්මක කිරීම සඳහා ටර්මිනලයේ 1 විධානය ක්රියාත්මක කිරීමට වඩා:
mongo < drop_bad.js
ක්රම කිහිපයක් තිබුණද, හොඳම ක්රමය (වඩාත්ම කාර්යක්ෂම හා පහසුම) භාවිතා කිරීමයි db.dropDatabase()
ඔබේ විධාන විමසුමේදී, පළමුව පහත විධානය භාවිතා කරමින් මොන්ගෝඩ්බ් වෙත සම්බන්ධ වන්න:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
ඔබ සමඟ db වෙත පිවිසෙනු ඇත <dbname>
.
සම්පූර්ණ දත්ත සමුදාය අතහැර දැමීමට පහත විධානය ක්රියාත්මක කරන්න:
db.dropDatabase()
එක් ලයිනර් දුරස්ථයක් මොන්ගෝ දත්ත ගබඩාවෙන් සියලුම එකතු ඉවත් කරයි
සටහන භාවිතා කළ යුත්තේ --host, (-h යනු මොන්ගෝ විධානය සඳහා උදව්), සහ -d විකල්පයක් නොවේ, මුරපදයෙන් පසු db සහ විධානය තෝරන්න.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
ඔබගේ mongoDB විධාන රේඛාවට පිවිසෙන්න: පහත විධානයන් ටයිප් කරන්න. "YOUR_DATABASE_NAME" භාවිතා කරන්න; db.dropDatabase ();
පයිතන් භාවිතයෙන් මොන්ගෝ ඩී බී දත්ත ගබඩාවක් අතහරින්න:
import argparse
import pymongo
if __name__ == "__main__":
"""
Drop a Database.
"""
parser = argparse.ArgumentParser()
parser.add_argument("--host", default='mongodb://localhost:27017',
help="mongodb URI [default: %(default)s]")
parser.add_argument("--database", default=None,
help="database name: %(default)s]")
args = parser.parse_args()
client = pymongo.MongoClient(host=args.host)
if args.database in client.list_database_names():
client.drop_database(args.database)
print(f"Dropped: '{args.database}'")
else:
print(f"Database '{args.database}' does not exist")
ටර්මිනලයක් විවෘත කර ටයිප් කරන්න:
mongo
පහත විධානය මඟින් ලැයිස්තුගත දත්ත සමුදායන් පෙන්විය යුතුය:
show dbs
/* the <dbname> is the database you'd like to drop */
use <dbname>
/* the below command will delete the database */
db.dropDatabase()
පහත දැක්වෙන්නේ පර්යන්තයේ ප්රතිදානය විය යුතුය:
{
"dropped": "<dbname>",
"ok": 1
}
db අතහැරීමට මොන්ගෝ ෂෙල් වෙතින් පහත විධානය භාවිතා කරන්න
භාවිත ; db.dropDatabase ();
> use auth-users ; db.dropDatabase()
සහ > use auth-users; db.dropDatabase()
දෙකම ආපසු[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :