【发布时间】:2020-12-23 09:22:41
【问题描述】:
我没有足够的声誉来发表评论,因此我不得不再次问这个问题。
我尝试了不同的方法来删除此处提到的动态更改的日期列,但对我没有任何效果:How to remove a field completely from a MongoDB document?
Environment_Details - 操作系统:Windows10,pymongo:3.10.1,MongoDB Compass App:4.4,python:3.6
我正在尝试删除“2020/08/24”列(在我的情况下,此日期将是动态的)。我的数据如下所示:
[{
"_id": {
"$oid": "5f4e4dda1031d5b55a3adc70"
},
"Site": "ABCD",
"2020/08/24": "1",
"2020/08/25": "1.0"
},{
"_id": {
"$oid": "5f4e4dda1031d5b55a3adc71"
},
"Site": "EFGH",
"2020/08/24": "1",
"2020/08/25": "0.0"
}]
不会给我带来任何错误但也不会删除列/字段“2020/08/24”的命令:
col_name = "2020/08/24"
db.collection.update_many({}, {"$unset": {f"{col_name}":1}})
db.collection.update({}, {"$unset": {f"{col_name}":1}}, False, True)
db.collection.update_many({}, query =[{ '$unset': [col_name] }])
在尝试将 multi:True 与更新选项一起使用时,我总是遇到错误。
我使用的确切代码是:
import pymongo
def connect_mongo(host, port, db):
conn = pymongo.MongoClient(host, port)
return conn[db]
def close_mongo(host, port):
client = pymongo.MongoClient(host, port)
client.close()
def delete_mongo_field(db, collection, col_name, host, port):
"""Delete column/field from a collection"""
db = connect_mongo(host, port, db)
db.collection.update_many({}, {"$unset": {f"{col_name}":1}})
#db.collection.update_many({}, {'$unset': {f'{col_name}':''}})
close_mongo(host,port)
col_to_delete = "2020/08/30"
delete_mongo_field(mydb, mycollection, col_to_delete, 'localhost', 27017)
【问题讨论】:
标签: python-3.x mongodb pymongo pymongo-3.x