我需要删除文档的某些字段,但我只知道要保留的字段。如何取消设置除已知字段外的所有字段。例如:
数据库中的文档如下所示
{
"_id" : ObjectId("1234567891234"),
"name" : "testname",
"settings" : {
"pairing" : true}
"subject" : "alarm"
}
我想删除“设置”和“主题”字段。所以会像下面这样。在
^{pr2}$但是我不能只对字段使用“$unset”,因为我只知道要保留的字段。在
在pymongo有办法做到这一点吗。我发现了一个相关的问题,但我不知道在Python2.7中这是否可能。在
相关问题: How do I unset all fields except a known set of fields?
是的,有可能!如果要取消设置集合中多个文档的已知字段之外的所有字段,则最好的方法是使用“bulk”操作。在
mongodb3.2不推荐使用^{} 及其关联方法。所以如果你应该使用^{} 。在
对于单个文档,您需要使用^{} 方法,该方法返回与您的条件匹配的文档,然后^{} 在3.0版本中新增
^{pr2}$如果不使用最新版本的MongoDB或Pymongo驱动程序,则需要使用
Bulk()
API。在对于单个文档,您可以依赖^{} 方法。在
一种可能的方法是在不使用“$set”的情况下更新整个文档,删除未指定的字段,例如:
做
^{pr2}$将导致删除其他字段,但“name”。 因此,在python中可以执行以下操作:
(如果您知道可以搜索的ID,但一定要导入
from bson.objectid import ObjectId
)。之后,将集合存储在result中。然后,您需要使用已知的记录更新示例:这是一种方法。当然,它只保留“name”和“\u id”,但所有其他未指定的字段都将被删除。希望有帮助
相关问题 更多 >
编程相关推荐