嗨,大家好,我使用mongodb和python来存储一些信息,但是我想删除* timed array 中的 2nd object ,而不是 id的第一个ID *对象。你知道我该怎么办吗?
我已经尝试了一些代码,但一无所获。
问题来源:stackoverflow
您可以尝试使用$ unset和$ pull删除该数组元素。
像这样的作品:
from pymongo import MongoClient
from bson.objectid import ObjectId
import pprint
client = MongoClient()
db = client['test']
collection = db.sotest1
a = list(collection.find({'_id': ObjectId('5e6d9cb1e61607439cf2416f')}))
print('Before Update')
pprint.pprint(a)
# Remove by Index using unset and pull
collection.update_one({'_id': ObjectId('5e6d9cb1e61607439cf2416f')},
{'$unset': {'timed.576819964179382272.timed.1': 1}})
collection.update_one({'_id': ObjectId('5e6d9cb1e61607439cf2416f')},
{'$pull': {'timed.576819964179382272.timed': None}})
a = list(collection.find({'_id': ObjectId('5e6d9cb1e61607439cf2416f')}))
print('After update')
pprint.pprint(a)
结果:
Before Update
[{'_id': ObjectId('5e6d9cb1e61607439cf2416f'),
'timed': {'173569203977060353': {'name': 'Pollig#4963',
'timed': [{'strObj': 'stuff in here'}]},
'576819964179382272': {'name': 'Ranka#9895',
'timed': [{'str1': 'test'},
{'str1': 'remove me'},
{'str2': 'test3'},
{'extra': 'extra object in '
'array'}]}}}]
After update
[{'_id': ObjectId('5e6d9cb1e61607439cf2416f'),
'timed': {'173569203977060353': {'name': 'Pollig#4963',
'timed': [{'strObj': 'stuff in here'}]},
'576819964179382272': {'name': 'Ranka#9895',
'timed': [{'str1': 'test'},
{'str2': 'test3'},
{'extra': 'extra object in '
'array'}]}}}]
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。