如何解决MongoDB python update_one
我在Python3上使用 pymongo 有几种方法: 我的Mongo资料库中包含相同的文档:
{
"_id": {
"$oid": "5f516162bd2324516e1b80ed"
},"resources": [],"name": "mygroup1","instances": [
{
"a90c18f62af546ccba02fa3734f00a02": {
"instance_name": "","key": {
"$binary": "123","$type": "0"
}
}
},{
"a90c18f62af546ccba02fa3734f00a03": {
"instance_name": "","key": {
"$binary": "3334",{
"a90c18f62af546ccba02fa3734f00a04": {
"instance_name": "","key": {
"$binary": "234234234","$type": "0"
}
}
}
]
}
我有两种情况: 当文档中的 instance_id 不在时(exp的实例ID ... a90c18f62af546ccba02fa3734f00a02 )
我的第二种方法检查整个文档,并且 a90c18f62af546ccba02fa3734f00a02 是否不在列表中[] 此方法将新记录添加到文档:
def set_instance(self,fingerprint,guid)-> tuple:#Guid是文档的ID。 cipher_key,密钥= self.gen_code()
response = self.col.update_one(filter={"_id": ObjectId(guid)},update={"$push": {"instances": {
fingerprint: {
"instance_name": "","key": key
}
}}})
这种方法很好用。
但是首先,如果我的方法在文档中捕获了相同的实例ID,我想更新具有相同ID的现有实例,更具体地说,我想更新{}中的对值:
like "key"
我尝试使用很多不同的请求,但是很遗憾,我无法更新已经存在的请求。 例如,这是错误的方法,用于更新特别是 instanceID 的现有值:
def update_instance(self,fingerprint,guid)->tuple:
cipher_key,key = self.gen_code()
response = self.col.update_one(filter={"_id": ObjectId(guid),"instances": [{fingerprint}]},update={"$pull": {"key": key}})
我尝试使用$ pull,push等不同的运算符,以及诸如find_OneAndUpdate之类的另一个func,update 但是无法解决。 可能我走错了路,所有事情都可能通过一种方法解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。