![](/img/trans.png)
[英]Update ALL and return ALL matching documents from mongodb using pymongo
[英]Remove attribute from all MongoDB documents using Python and PyMongo
在我的MongoDB中,存在大量這些文檔:
{ "_id" : ObjectId("5341eaae6e59875a9c80fa68"),
"parent" : {
"tokeep" : 0,
"toremove" : 0
}
}
我想刪除每一個中的parent.toremove
屬性。
使用MongoDB shell,我可以使用以下方法完成此操作:
db.collection.update({},{$unset: {'parent.toremove':1}},false,true)
但是我如何在Python中執行此操作?
app = Flask(__name__)
mongo = PyMongo(app)
mongo.db.collection.update({},{$unset: {'parent.toremove':1}},false,true)
返回以下錯誤:
File "myprogram.py", line 46
mongo.db.collection.update({},{$unset: {'parent.toremove':1}},false,true)
^
SyntaxError: invalid syntax
在$unset
周圍加上引號,命名你所包含的參數( multi
)並使用正確的true語法:
mongo.db.collection.update({}, {'$unset': {'parent.toremove':1}}, multi=True)
只是發現奇怪的是必須為要刪除的字段附加一個任意值,例如一個小數字(1),一個空字符串('')等,但它在MongoDB doc中真的提到過,在JavaScript中有示例:
$未設置
$ unset運算符刪除特定字段。 請考慮以下語法:
{$ unset:{field1:“”,...}}
$ unset表達式中的指定值(即“”)不會影響操作。
對於Python / PyMongo,我想把值設為None
:
{'$unset': {'field1': None}}
因此,對於OP的問題,它將是:
mongo.db.collection.update({}, {'$unset': {'parent.toremove': None}}, multi=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.