805

Cách dễ nhất để làm điều này từ dấu nhắc bash của tôi là gì?

|
1.0k

Như thế này:

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

Thông tin thêm về kịch bản shell từ dòng lệnh tại đây: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting

|
  • 1

    Điều này rất hữu ích trong trường hợp của tôi. Bằng cách nào đó tôi đã có một cơ sở dữ liệu có tên "mean-dev" từ bản cài đặt cũ hơn và nhập "mean-dev.dropDatabase ()" vào trình vỏ mongo dẫn đến "ReferenceError: mean không được xác định". Nhưng sử dụng giải pháp trong câu trả lời này đã làm được mẹo. +1

    – Lý Mỹ Khuyên 01:15:09 26/08/2014
  • 1

    Nếu bạn muốn có được kết quả có thể đọc được của con người, hãy làm theo cách này: mongo <dbname> --eval "printjson(db.dropDatabase())"

    – Ngô Tôn Lễ 11:23:39 07/09/2014
  • 1

    KP MacGregor. bạn nên có: "sử dụng mean-dev" + "db.dropDatabase ()"

    – Tạ Gia Linh 15:14:14 23/02/2016
824

Cách tốt nhất để làm điều đó là từ bảng điều khiển mongodb:

> use mydb; 
> db.dropDatabase();

Ngoài ra, bạn có thể dừng mongodvà xóa các tệp dữ liệu khỏi thư mục dữ liệu của mình, sau đó khởi động lại.

Gợi ý: bạn cũng có thể di chuyển các tệp dữ liệu sang thư mục con và xóa chúng nếu bạn chắc chắn rằng bạn không còn cần chúng nữa.

|
  • 1

    Tôi nghĩ rằng anh ấy có nghĩa là trực tiếp từ dấu nhắc không anh? Trong trường hợp đó, bạn phải tạo tệp .js bằng các lệnh đó và gọi nó từ dấu nhắc bằng cách sử dụng "mongo dropdb.js" hoặc một cái gì đó hoặc làm như bạn nói và xóa các tệp theo cách thủ công.

    – Trịnh Sơn Hải 21:18:45 13/01/2012
  • 1

    nhưng lưu ý rằng bạn không thể sử dụng uselệnh trong tệp .js, bạn phải kết nối với DB cụ thể (chỉ định dbname cho lệnh mongo)

    – Hoàng Quỳnh Lâm 08:34:31 29/11/2012
  • 1

    Mẹo chuyên nghiệp: sau khi bỏ cơ sở dữ liệu, bạn có thể muốn thoát khỏi vỏ mongo và xóa ~/.dbshelltệp của mình để xóa lịch sử lệnh. (Có thể có một cách tốt hơn để làm điều đó - Tôi không chắc chắn.) Tôi làm điều này bởi vì, không giống như SQL, lệnh mongo để hủy cơ sở dữ liệu không thực sự tham chiếu tên của cơ sở dữ liệu - nó chỉ bỏ cơ sở dữ liệu mà khách hàng hiện đang kết nối. Xóa lịch sử lệnh của bạn sẽ ngăn bạn vô tình phát lại dropDatabaselệnh và vô tình làm rơi cơ sở dữ liệu thứ hai.

    – Ngô Hồng Nga 14:11:21 08/08/2013
  • 1

    Đó là một ý tưởng thông minh, @chrisallenlane. Vỏ mongodb là một công cụ nguy hiểm đôi khi ... :)

    – Tạ Xuân Đạt 20:09:40 08/08/2013
  • 1

    Cảnh báo: Nếu bạn bỏ cơ sở dữ liệu và tạo cơ sở dữ liệu mới có cùng tên, bạn phải khởi động lại tất cả các trường hợp mongos hoặc sử dụng lệnh flushRouterConfig trên tất cả các trường hợp mongos trước khi đọc hoặc ghi vào cơ sở dữ liệu đó. Hành động này đảm bảo rằng các phiên bản mongos làm mới bộ đệm siêu dữ liệu của chúng, bao gồm cả vị trí của phân đoạn chính cho cơ sở dữ liệu mới. Mặt khác, các mongos có thể bỏ lỡ dữ liệu khi đọc và có thể ghi dữ liệu vào một phân đoạn sai.

    – Hoàng Ðức Bằng 12:34:28 29/03/2019
112

Bạn không cần heredocs hoặc eval , mongobản thân nó có thể hoạt động như một thông dịch viên.

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

Làm cho tập tin thực thi và chạy nó.

|
  • 1

    Lưu ý rằng tên tập lệnh phải kết thúc bằng .js, nếu không nó sẽ được hiểu là địa chỉ db.

    – Trịnh Sơn Hải 14:52:21 02/01/2017
  • 1

    @Vegard Điều đó không đúng. Bạn đang chạy mongo filenamekhông cần thiết - tệp đã có trình thông dịch ở dòng trên cùng. Chỉ cần làm cho tập tin thực thi và chạy nó./filename

    – Hoàng Quỳnh Lâm 10:39:28 04/01/2017
  • 1

    @mikemaccana Tôi biết điều đó, nhưng ./filenamethực sự sẽ chạy /usr/bin/env mongo filename, phải không? Và vì vậy, nếu filenamekhông kết thúc .py, mongo sẽ không nhận ra đối số là tập lệnh để chạy.

    – Ngô Hồng Nga 11:00:15 04/01/2017
  • 1

    "Làm ./filename sẽ thực sự chạy tên tập tin / usr / bin / env mongo, phải không?" Không. Kiểm tra đầu ra của ps.

    – Tạ Xuân Đạt 11:21:31 04/01/2017
  • 1

    @mikemaccana Đầu ra của pschỉ hiển thị cho bạn những gì đang chạy tại thời điểm bạn gọi ps, không phải chuỗi các execcuộc gọi dẫn đến điểm đó cũng như công việc mà kernel đã thực hiện để tải và thực thi tệp. Nếu bạn muốn biết những gì đang thực sự xảy ra, bạn nên sử dụng viết một trình bao bọc xung quanh /usr/bin/env, đặt nó là tệp thực thi trong dòng shebang, và sau đó khởi động toàn bộ strace.

    – Hoàng Ðức Bằng 23:02:28 10/03/2017
109

Tôi thấy điều này dễ nhớ:

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 }
|
31

Bắt đầu MongoDB

Lệnh thả cơ sở dữ liệu là:

1. đầu tiên chọn cơ sở dữ liệu mà bạn muốn xóa

use < database name >

2. Sau đó sử dụng ..

db.dropDatabase()
|
28

Bạn cũng có thể sử dụng một "di truyền":

mongo localhost/db <<EOF
db.dropDatabase()
EOF

Kết quả trong đầu ra như:

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

Tôi thích sử dụng heredocs cho những thứ như thế này, trong trường hợp bạn muốn chuỗi lệnh phức tạp hơn.

|
18

Dưới đây là một số thao tác xóa hoàn toàn cho mongodb bằng cách sử dụng shell mongo

Để xóa tài liệu cụ thể trong bộ sưu tập:db.mycollection.remove( {name:"stack"} )

Để xóa tất cả các tài liệu trong bộ sưu tập: db.mycollection.remove()

Để xóa bộ sưu tập : db.mycollection.drop()

để xóa cơ sở dữ liệu : đầu tiên hãy vào cơ sở dữ liệu đó bằng use mydblệnh và sau đó

db.dropDatabase()

trực tiếp từ dấu nhắc lệnh hoặc blash: mongo mydb --eval "db.dropDatabase()

|
18

Cách khác:

echo "db.dropDatabase()" | mongo <database name>
|
15

Thực thi trong một thiết bị đầu cuối:

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.
|
11

Mở một cửa sổ đầu cuối khác và thực hiện các lệnh sau,

mongodb
use mydb
db.dropDatabase()

Đầu ra của hoạt động đó sẽ trông như sau

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 }
>

Xin lưu ý rằng mydbvẫn đang được sử dụng, do đó việc chèn bất kỳ đầu vào nào tại thời điểm đó sẽ khởi tạo lại cơ sở dữ liệu.

|
4

Sử dụng Javascript, bạn có thể dễ dàng tạo tập lệnh drop_bad.js để hủy cơ sở dữ liệu của mình:

tạo drop_bad.js :

use bad;
db.dropDatabase();

Hơn chạy 1 lệnh trong thiết bị đầu cuối để thực hiện kịch bản bằng cách sử dụng shell mongo:

mongo < drop_bad.js
|
3

Mặc dù có một số phương pháp, Cách tốt nhất (hiệu quả nhất và dễ nhất) là sử dụng db.dropDatabase()

|
1

Trong dấu nhắc lệnh của bạn, Đầu tiên kết nối với mongodb bằng lệnh sau:

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

bạn sẽ truy cập db với <dbname>.

Chạy lệnh sau để thả toàn bộ cơ sở dữ liệu:

db.dropDatabase()
|
1

Đăng nhập vào dòng lệnh mongoDB của bạn: Và nhập các lệnh dưới đây. sử dụng "YOU_DATABASE_NAME"; db.dropDatabase ();

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.