使用Python和PyMongo从所有MongoDB文档中删除属性
在我的MongoDB中,存在大量这样的文档:使用Python和PyMongo从所有MongoDB文档中删除属性,python,mongodb,pymongo,Python,Mongodb,Pymongo,在我的MongoDB中,存在大量这样的文档: { "_id" : ObjectId("5341eaae6e59875a9c80fa68"), "parent" : { "tokeep" : 0, "toremove" : 0 } } 我想删除每个文件中的parent.toremove属性 使用MongoDB shell,我可以通过以下方式完成此任务: db.collection.update({},{$unset: {'parent.toremove':1}},
{ "_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文档中确实提到了它,JavaScript中的示例如下: 美元未结算 $unset运算符删除特定字段。考虑下面的语法: {$unset:{field1::,…} $unset表达式中的指定值(即“”)不影响 手术 对于Python/PyMongo,我想输入一个值
None
:
{'$unset': {'field1': None}}
因此,OP的问题是:
mongo.db.collection.update({}, {'$unset': {'parent.toremove': None}}, multi=True)
用pymong删除多个字段怎么样?