විධාන රේඛාවෙන් මොන්ගෝ ඩී බී දත්ත ගබඩාවක් අතහරින්නේ කෙසේද?


864

මගේ බාෂ් විමසුමෙන් මෙය කිරීමට ඇති පහසුම ක්‍රමය කුමක්ද?


5
මෙම ප්‍රශ්නය බලන්න: stackoverflow.com/questions/3366397/… . මොන්ගෝ කවචයෙන් එය කිරීම ඇත්තෙන්ම පහසුය.
ජෙසී පොලාක්

Answers:


1095

මෙවැනි:

mongo <dbname> --eval "db.dropDatabase()"

විධාන රේඛාවෙන් කවචය ස්ක්‍රිප්ට් කිරීම පිළිබඳ වැඩි විස්තර: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting


මෙය මගේ නඩුවේදී ඉතා ප්‍රයෝජනවත් විය. කෙසේ හෝ මා සතුව පැරණි ස්ථාපනයකින් "මධ්යන්ය-දේව්" නමින් දත්ත සමුදායක් ඇති අතර, මොන්ගෝ කවචයේ "මධ්යන්ය- dev.dropDatabase ()" ඇතුළත් කිරීමෙන් "ReferenceError: mean යන්න අර්ථ දක්වා නැත". නමුත් මෙම පිළිතුරෙහි විසඳුම භාවිතා කිරීම උපක්‍රමය විය. +1
කේපී මැක්ග්‍රෙගර්

22
ඔබට කියවිය හැකි මිනිස් mongo <dbname> --eval "printjson(db.dropDatabase())"
ප්‍රති result ලයක්

1
කේපී මැක්ග්‍රෙගර්. ඔබ විය යුතුව තිබුණේ: "මධ්යන්ය-දේව් භාවිතා කරන්න" + "db.dropDatabase ()"
ඔස්මා

ස්තූතියි. ඔබට සත්කාරක සහ වරාය රිසිකරණය කළ හැකි ආකාරය මෙයයි: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
ක්ලෙමන්ස්

849

එය කළ හැකි හොඳම ක්‍රමය වන්නේ මොන්ගෝඩ් කොන්සෝලයෙනි:

> use mydb; 
> db.dropDatabase();

විකල්පයක් ලෙස, ඔබට mongodඔබේ දත්ත නාමාවලියෙන් දත්ත ගොනු නවතා මකා දැමිය හැකිය , පසුව නැවත ආරම්භ කරන්න.

ඉඟිය: ඔබට දත්ත ගොනු උප ෆෝල්ඩරයකට ගෙන යා හැකි අතර ඔබට ඒවා තවදුරටත් අවශ්‍ය නොවන බව ඔබට විශ්වාස නම් ඒවා මකන්න.


2
මම හිතන්නේ ඔහු කෙලින්ම අදහස් කළේ ඔහුගෙන් නොවේද? එවැනි අවස්ථාවකදී ඔබට එම විධානයන් සමඟ .js ගොනුවක් ජනනය කළ යුතු අතර එය "mongo dropdb.js" හෝ වෙනත් දෙයක් භාවිතයෙන් විමසීමෙන් හෝ ඔබ කියන පරිදි කරන්න සහ ගොනු අතින් ඉවත් කරන්න.
රෙමන් වැන් ව්ලීට්

2
use.js ගොනුවේ විධාන භාවිතා කළ නොහැකි බව මතක තබා ගන්න, ඔබ කොන්ක්‍රීට් ඩීබී සමඟ සම්බන්ධ විය යුතුය (මොන්ගෝ විධානය සඳහා dbname සඳහන් කරන්න)
බෙට්ලිස්ටා

46
හිතකර උපදෙස්: දත්ත සමුදායක් අතහැර දැමීමෙන් පසු, ඔබට මොන්ගෝ කවචයෙන් ඉවත් ~/.dbshellවී ඔබගේ විධාන ඉතිහාසය ඉවත් කිරීමට ගොනුව මකා දැමීමට අවශ්‍ය විය හැකිය . (ඉටු කරන බවට හොඳ ක්රමයක් ද ඇති විය හැක -. මට විශ්වාස නෑ) SQL සමග මෙන් නොව, mongo විධානය දත්ත ඉවත් කිරීමට, ඒ නිසා මම මේ ඇත්තටම හෙළන්නට දත්ත සමුදා නාමය කොටසක් නොවන - එය හුදෙක් පහළ බසී සේවාදායකයා දැනට සම්බන්ධ කර ඇති දත්ත සමුදාය. ඔබගේ විධාන ඉතිහාසය හිස් කිරීමෙන් ඔබ අහම්බෙන් dropDatabaseවිධානය නැවත ධාවනය කිරීමෙන් සහ නොදැනුවත්වම දෙවන දත්ත සමුදාය අතහැර දැමීම වළක්වනු ඇත .
ක්‍රිස් ඇලන් පටුමග

3
ඒක හොඳ අදහසක්, ris ක්‍රිසලාන්ලේන්. මොන්ගෝඩ් කවචය විටෙක භයානක මෙවලමකි ... :)
mnemosyn

අවවාදයයි: ඔබ දත්ත සමුදායක් අතහැර එකම නමින් නව දත්ත සමුදායක් නිර්මාණය කරන්නේ නම්, ඔබ සියලු මොන්ගෝස් සිද්ධීන් නැවත ආරම්භ කළ යුතුය, නැතහොත් එම දත්ත ගබඩාවට කියවීමට හෝ ලිවීමට පෙර සියලු මොන්ගෝස් අවස්ථාවන්හි ෆ්ලෂ් රූටර්කොන්ෆිග් විධානය භාවිතා කළ යුතුය. මෙම ක්‍රියාව මඟින් නව දත්ත සමුදාය සඳහා ප්‍රාථමික කැබැල්ලේ පිහිටීම ඇතුළුව මොන්ගෝස් සිද්ධීන් ඔවුන්ගේ පාර-දත්ත හැඹිලිය නැවුම් කරයි. එසේ නොමැතිනම්, මොන්ගෝවරුන්ට කියවීම්වල දත්ත මග හැරිය හැකි අතර වැරදි මුවකට දත්ත ලිවිය හැකිය.
Lekr0

117

මෙය මතක තබා ගැනීම පහසු බව මට පෙනී ගියේය:

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 }

114

ඔබට පාරම්පරික හෝ එවාල් අවශ්‍ය නොවේ , mongoඑයම පරිවර්තකයෙකු ලෙස ක්‍රියා කළ හැකිය.

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

ගොනුව ක්‍රියාත්මක කර එය ක්‍රියාත්මක කරන්න.


3
ස්ක්‍රිප්ට් නාමය අවසන් විය යුතු බව සලකන්න .js, එසේ නොමැතිනම් එය db ලිපිනය ලෙස අර්ථ දැක්විය හැකිය.
වේගාඩ්

1
E වේගාර්ඩ් එය නිවැරදි නොවේ. ඔබ ධාවනය mongo filenameකරන්නේ අනවශ්‍යයි - ගොනුවට දැනටමත් ඉහළ පේළියේ පරිවර්තකයක් ඇත. ගොනුව ක්‍රියාත්මක කර එය ක්‍රියාත්මක කරන්න./filename
mikemaccana

ikemikemaccana මම ඒක දන්නවා, නමුත් එසේ කිරීමෙන් ./filenameඇත්ත වශයෙන්ම ක්‍රියාත්මක වේවි /usr/bin/env mongo filenameනේද? ඒ නිසා filenameඑය අවසන් නොවන්නේ නම් .py, මොන්ගෝ තර්කය ක්‍රියාත්මක කිරීමට පිටපතක් ලෙස හඳුනා නොගනී.
වේගාඩ්

"./Filename කිරීම ඇත්ත වශයෙන්ම / usr / bin / env mongo ගොනු නාමය ක්‍රියාත්මක වේ, නේද?" ප්‍රතිදානය පරීක්ෂා කරන්න ps.
mikemaccana

ikemikemaccana ප්‍රතිදානය මඟින් psඔබට ආයාචනා කරන අවස්ථාවේ ක්‍රියාත්මක වන්නේ කුමක්ද යන්න පමණක් පෙන්වයි ps, execඑම ස්ථානයට මඟ පෙන්වන ඇමතුම් දාමය හෝ ගොනුව පැටවීම සහ ක්‍රියාත්මක කිරීම සඳහා කර්නලය විසින් කර ඇති කාර්යයන් නොවේ. ඔබට ඇත්ත වශයෙන්ම සිදුවන්නේ කුමක්ද යන්න දැන ගැනීමට අවශ්‍ය නම්, ඔබ වටා එතීම ලිවිය යුතුය /usr/bin/env, එය ෂෙබාං රේඛාවේ ක්‍රියාත්මක කළ හැකි ලෙස සකසා ඉන්පසු සියල්ල ඉවත් කරන්න strace.
kbolino

31

මොන්ගෝ ඩීබී ආරම්භ කරන්න

දත්ත සමුදාය පහත වැටීම සඳහා වන විධානය:

1. මුලින්ම ඔබට මැකීමට අවශ්‍ය දත්ත සමුදාය තෝරන්න

use < database name >

2. එහෙනම් මේක පාවිච්චි කරන්න ..

db.dropDatabase()

28

ඔබට "පාරම්පරික" භාවිතා කළ හැකිය:

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

ඔබට වඩාත් සංකීර්ණ විධාන අනුපිළිවෙලක් අවශ්‍ය නම්, මේ වගේ දේවල් සඳහා හෙරෙඩොක්ස් භාවිතා කිරීමට මම කැමතියි.


21

මොන්ගෝ ෂෙල් භාවිතයෙන් මොන්ගෝඩ් සඳහා සම්පූර්ණ මකාදැමීමේ මෙහෙයුම් කිහිපයක් මෙන්න

කිරීමට විශේෂයෙන් ලියවිල්ල මකා එකතු දී:db.mycollection.remove( {name:"stack"} )

කිරීමට සියලු ලිපි ලේඛන මකා එකතු දී: db.mycollection.remove()

කිරීමට delete එකතුව : db.mycollection.drop()

කිරීමට delete දත්ත සමුදාය : පළමු විසින් බව දත්ත යන්න use mydbනම් විධානය සහ

db.dropDatabase()

කෙලින්ම විධාන විමසුමෙන් හෝ බ්ලාෂ් වලින්: mongo mydb --eval "db.dropDatabase()



15

පර්යන්තයක ක්‍රියාත්මක කරන්න:

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.

1
මීට මාසයකට පෙර ලබා දුන් මෙම පිළිතුරට සමාන පිළිතුරකි .
ඩෑන් ඩස්කලෙස්කු

10

තවත් පර්යන්ත කවුළුවක් විවෘත කර පහත විධානයන් ක්‍රියාත්මක කරන්න,

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එය තවමත් භාවිතයේ පවතින බව කරුණාවෙන් සලකන්න , එම අවස්ථාවේ දී ඕනෑම ආදානයක් ඇතුළත් කිරීමෙන් දත්ත සමුදාය නැවත ආරම්භ වේ.


4

ජාවාස්ක්‍රිප්ට් භාවිතයෙන්, ඔබේ දත්ත සමුදාය අතහැර දැමීමට ඔබට පහසුවෙන් drop_bad.js ස්ක්‍රිප්ටයක් සෑදිය හැකිය :

නිර්මාණය drop_bad.js :

use bad;
db.dropDatabase();

මොන්ගෝ ෂෙල් භාවිතයෙන් ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කිරීම සඳහා ටර්මිනලයේ 1 විධානය ක්‍රියාත්මක කිරීමට වඩා:

mongo < drop_bad.js

2

ක්‍රම කිහිපයක් තිබුණද, හොඳම ක්‍රමය (වඩාත්ම කාර්යක්ෂම හා පහසුම) භාවිතා කිරීමයි db.dropDatabase()


2

ඔබේ විධාන විමසුමේදී, පළමුව පහත විධානය භාවිතා කරමින් මොන්ගෝඩ්බ් වෙත සම්බන්ධ වන්න:

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

ඔබ සමඟ db වෙත පිවිසෙනු ඇත <dbname>.

සම්පූර්ණ දත්ත සමුදාය අතහැර දැමීමට පහත විධානය ක්‍රියාත්මක කරන්න:

db.dropDatabase()

-h යනු උදව්, -d යනු 'මොන්ගෝ - හොස්ට් [ධාරක-නම] වැනි විකල්පයක් නොවේ: [වරාය: අංකය] -u [පරිශීලක නාමය] -p [මුරපදය] [dbname] - ඊවාල් "db.dropDatabase ( ) "`
jasenmichael

2

එක් ලයිනර් දුරස්ථයක් මොන්ගෝ දත්ත ගබඩාවෙන් සියලුම එකතු ඉවත් කරයි

සටහන භාවිතා කළ යුත්තේ --host, (-h යනු මොන්ගෝ විධානය සඳහා උදව්), සහ -d විකල්පයක් නොවේ, මුරපදයෙන් පසු db සහ විධානය තෝරන්න.

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"


0

පයිතන් භාවිතයෙන් මොන්ගෝ ඩී බී දත්ත ගබඩාවක් අතහරින්න:

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")

0

ටර්මිනලයක් විවෘත කර ටයිප් කරන්න:

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
}

-1

db වත්මන් දත්ත සමුදා නාම වර්ගය පෙන්වනු ඇත : db.dropDatabase ();

1- ' use ' keyword භාවිතා කරමින් අතහැර දැමීමට දත්ත සමුදාය තෝරන්න .

2- ඉන්පසු db.dropDatabase () ටයිප් කරන්න ;


-2

db අතහැරීමට මොන්ගෝ ෂෙල් වෙතින් පහත විධානය භාවිතා කරන්න

භාවිත ; db.dropDatabase ();


මෙම විධානය මඟින් කුමන දත්ත සමුදාය අතහැර දැමිය යුතුද? මම උත්සාහ කළා "auth-පරිශීලකයන්" නමින් දත්ත සමුදාය > use auth-users ; db.dropDatabase()සහ > use auth-users; db.dropDatabase()දෙකම ආපසු[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
කෙනඩි මහතා
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.