วิธีที่ง่ายที่สุดในการทำเช่นนี้จาก bash prompt ของฉันคืออะไร
วิธีที่ง่ายที่สุดในการทำเช่นนี้จาก bash prompt ของฉันคืออะไร
คำตอบ:
แบบนี้:
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()'
วิธีที่ดีที่สุดที่จะทำคือจากคอนโซล MongoDB:
> use mydb;
> db.dropDatabase();
อีกวิธีหนึ่งคุณสามารถหยุดmongod
และลบไฟล์ข้อมูลจากไดเรกทอรีข้อมูลของคุณแล้วรีสตาร์ท
คำแนะนำ: คุณสามารถย้ายไฟล์ข้อมูลไปยังโฟลเดอร์ย่อยและลบออกหากคุณแน่ใจว่าคุณไม่ต้องการมันอีกต่อไป
use
คำสั่งในไฟล์. js ได้คุณต้องเชื่อมต่อกับฐานข้อมูล DB (ระบุ dbname สำหรับคำสั่ง mongo)
~/.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 }
คุณไม่จำเป็นต้อง heredocs หรือ EVAL , 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
Mongo จะไม่รับรู้ว่าอาร์กิวเมนต์เป็นสคริปต์ที่จะเรียกใช้
ps
เลขที่ตรวจสอบการส่งออกของ
ps
แสดงเฉพาะสิ่งที่ทำงานในเวลาที่คุณเรียกps
ไม่ใช่สายโซ่ของการexec
โทรที่นำไปสู่จุดนั้นหรืองานเคอร์เนลได้ทำเพื่อโหลดและรันไฟล์ ถ้าคุณต้องการที่จะรู้ว่าสิ่งที่เกิดขึ้นจริงที่คุณควรใช้เขียนกระดาษห่อรอบ/usr/bin/env
ชุดว่าปฏิบัติการในสาย shebang strace
แล้วเตะสิ่งที่ทั้งออกด้วย
เริ่ม MongoDB
คำสั่งสำหรับฐานข้อมูลหล่นคือ:
1.ก่อนอื่นเลือกฐานข้อมูลที่คุณต้องการลบ
use < database name >
2.จากนั้นใช้สิ่งนี้ ..
db.dropDatabase()
คุณสามารถใช้ "heredoc":
mongo localhost/db <<EOF
db.dropDatabase()
EOF
ผลลัพธ์ในผลลัพธ์เช่น:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
ฉันชอบใช้ heredocs เพื่อสิ่งนี้ในกรณีที่คุณต้องการลำดับของคำสั่งที่ซับซ้อนมากขึ้น
วิธีอื่น ๆ :
echo "db.dropDatabase()" | mongo <database name>
ต่อไปนี้คือการใช้การลบแบบเต็มสำหรับ MongoDB โดยใช้ Mongo Shell
ในการลบเอกสารเฉพาะในคอลเล็กชัน:db.mycollection.remove( {name:"stack"} )
ในการลบเอกสารทั้งหมดในคอลเล็กชัน: db.mycollection.remove()
หากต้องการลบคอลเล็กชัน : db.mycollection.drop()
เพื่อลบฐานข้อมูล : ก่อนอื่นให้ไปที่ฐานข้อมูลตามuse mydb
คำสั่งแล้ว
db.dropDatabase()
โดยตรงจาก command prompt หรือ blash: mongo mydb --eval "db.dropDatabase()
ดำเนินการในเทอร์มินัล:
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
ยังคงมีการใช้งานอยู่ดังนั้นการใส่ข้อมูลใด ๆ ในเวลานั้นจะเริ่มต้นฐานข้อมูลอีกครั้ง
ด้วยการใช้ Javascript คุณสามารถสร้างสคริปต์drop_bad.jsเพื่อวางฐานข้อมูลของคุณ:
สร้างdrop_bad.js :
use bad;
db.dropDatabase();
กว่ารันคำสั่ง 1 ในเทอร์มินัลเพื่อออกจากสคริปต์โดยใช้ mongo shell:
mongo < drop_bad.js
แม้ว่าจะมีหลายวิธีวิธีที่ดีที่สุด (มีประสิทธิภาพมากที่สุดและง่ายที่สุด) คือการใช้ db.dropDatabase()
ในพรอมต์คำสั่งของคุณก่อนอื่นให้เชื่อมต่อ mongodb โดยใช้คำสั่งต่อไปนี้:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
<dbname>
คุณจะได้รับการเข้าถึงฐานข้อมูลด้วย
รันคำสั่งต่อไปนี้เพื่อดร็อปฐานข้อมูลทั้งหมด:
db.dropDatabase()
หนึ่งซับระยะไกลลบคอลเลกชันทั้งหมดจากฐานข้อมูล Mongo
note ต้องใช้ - โฮสต์, (-h คือวิธีใช้สำหรับคำสั่ง mongo) และ -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 ();
ดร็อปฐานข้อมูล MongoDB โดยใช้ไพ ธ อน:
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")
dbจะแสดงประเภทชื่อฐานข้อมูลปัจจุบัน: db.dropDatabase ();
1- เลือกฐานข้อมูลที่จะวางโดยใช้คำหลัก ' ใช้ '
2- จากนั้นพิมพ์db.dropDatabase ();
ใช้คำสั่งต่อไปนี้จากเปลือก mongo เพื่อวาง 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 :