Удаление материала из нескольких коллекций одновременно - PullRequest
1 голос
/ 06 марта 2012

Есть ли способ удалить объекты из нескольких коллекций?Как удалить все из этой команды 5 коллекций в MongoDB?

Требуется много времени, чтобы вручную и вручную удалить каждую коллекцию в базе данных Mongo.

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Как упоминал Эндрю, для этого нет встроенного способа, но вы можете использовать Javascript, чтобы получить то, что вы хотите. Например, если бы я хотел быстро отбросить список баз данных (и грязно, это просто пример кода для проверки концепции!):

var deletelist = ["deleteme1", "deleteme2", "deleteme3"]
deletelist.forEach(
    function deletedbs(name) {
        db = db.getMongo().getDB( name );
        db.dropDatabase();
        print(name + " deleted");
    }
)

Конечно, нет проверки ошибок, но этот вид сценария на стороне сервера будет работать для функций кросс-сбора и кросс-базы данных. Если вы хотите запустить что-то на всех ваших базах данных, то вы можете построить список следующим образом:

var allDBs = db.getMongo().getDBNames()
for(var name in allDBs){
      db = db.getMongo().getDB( name );
      db.<command to execute on each DB>;
 }

Конечно, вы должны быть очень, очень осторожны при работе с такими вещами, чтобы избежать разрушения базы данных, поэтому проводите тщательное тестирование и используйте разумно:)

Для получения дополнительной информации о JS на стороне сервера, ознакомьтесь с документацией MongoDB здесь:

http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

1 голос
/ 06 марта 2012

Нет на самом деле, вам просто нужно удалить все элементы из каждой коллекции вручную:

db.foo1.remove({})
db.foo2.remove({})

Также, если вы заботитесь о производительности, вы можете вообще отказаться от коллекции, она должна быть быстрее:

db.foo1.drop()
db.foo2.drop()

Также альтернативным способом, если вам часто нужно отбрасывать эти пять коллекций, сгруппируйте их в одну базу данных и удалите всю базу данных:

use dbWithFiveCollections
db.dropDatabase()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...