Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地查询和更新MongoDB(Pymongo)中的条目?_Python_Python 3.x_Mongodb_Pymongo_Pymongo 3.x - Fatal编程技术网

Python 如何有效地查询和更新MongoDB(Pymongo)中的条目?

Python 如何有效地查询和更新MongoDB(Pymongo)中的条目?,python,python-3.x,mongodb,pymongo,pymongo-3.x,Python,Python 3.x,Mongodb,Pymongo,Pymongo 3.x,我有一个函数,如果我传入一个MongoDB.Collection.Object,它可能会也可能不会给我一个向量[1,2,3,4…]。首先,我需要提取所有必需的查询,然后根据每个查询更新条目。问题是我有这样的功能: def return_vector(q): # condition = my_logic if condition: return vector else: return None' for q in db.coll_name.find({'a.b.c':

我有一个函数,如果我传入一个
MongoDB.Collection.Object
,它可能会也可能不会给我一个向量
[1,2,3,4…]
。首先,我需要提取所有必需的查询,然后根据每个查询更新条目。问题是我有这样的功能:

def return_vector(q):
  # condition = my_logic
  if condition:
    return vector
  else:
    return None'

for q in db.coll_name.find({'a.b.c':{'$gt':0.4}}):
  vector = return_vector(q)
  if q:
    db.coll_name.update({'_id': q['_id']},{'$set': {'vector_v1': vector}})

有问题吗?这花了太多时间。我应该如何以优化的方式有效地使用它?

您可以执行多个更新。这可能是缓慢的原因之一

您可以使用
bulkwrite
组合多个更新并向服务器发送一个请求。这将大大减少网络往返时间


希望您不会同时对同一文档有多个写入请求。

您能编写一个虚拟代码来完成吗?我认为
find()
arrgegate
在这里会很有用。无论如何,我无论如何都得一个接一个地写。我不会写。我可以吗?我建议你
bulkWrite
,因为你需要更新。很抱歉,这对我不起作用。我不得不让节点人员来处理这件事。谢谢你的建议。Np,谢谢你的回复