2015-05-12 5 views
1

Предположим, что у меня есть документ, определенный в Mongoengine:Как выбрать все документы в MongoDB и удалить поле

class User(document): 
    username = StringField() 
    password = StringField() 
    login_history = ListField() 

Я уже создал несколько пользователей с этой «схеме», теперь я хочу, чтобы упасть в поле login_history и обновить его для всех пользователей, которые были созданы. Как это сделать в оболочке монго? И если это возможно, как это сделать с помощью MongoEngine?

Спасибо, ребята!

+0

http://stackoverflow.com/questions/18409120/mongodb-removing-a-field-from-all-subdocuments-in-an-array-field –

ответ

2

Просто $unset поле без указания критериев соответствия. Так что для Монго Shell, это было бы:

> db.user.update({}, {$unset: {login_history: true}}, {multi: true}) 

Важной частью здесь, чтобы обратить внимание на это в {multi: true} вариант, без которого вы будете в конечном итоге с помощью одного документа обновляется.

UPDATE

Для Mongoengine у ​​вас есть один и тот же многофункциональный вариант в качестве ключевого слова аргумент, см documentation.

+0

Это работает как шарм, спасибо! – benjaminz