Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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查询返回错误结果_Python_Mongodb_Pymongo_Azure Cosmosdb - Fatal编程技术网

Python MongoDB查询返回错误结果

Python MongoDB查询返回错误结果,python,mongodb,pymongo,azure-cosmosdb,Python,Mongodb,Pymongo,Azure Cosmosdb,我有两台计算机与同一个MongoDB集合通信。我将给出一个简单的示例,说明它们的功能,我使用PyMongo作为CLI接口 计算机A: 每1s: from bson import ObjectId from pymongo import MongoClient # Create payload client = MongoClient(mongo_html) collection_post = client["MyCollection"].posts pay_load = { "numbe

我有两台计算机与同一个MongoDB集合通信。我将给出一个简单的示例,说明它们的功能,我使用PyMongo作为CLI接口

计算机A: 每1s:

from bson import ObjectId
from pymongo import MongoClient
# Create payload
client = MongoClient(mongo_html)
collection_post = client["MyCollection"].posts
pay_load = {
    "number": 10,
    "is_processed": False
}
collection_post.insert_one(pay_load)
计算机B: 每10秒:

from bson import ObjectId
from pymongo import MongoClient
# Create payload
client = MongoClient(mongo_html)
collection_post = client["MyCollection"].posts

all_docs = collection_post.find({"is_processed": False})
for doc in all_docs:
    do_work(doc)
    collection_post.update({"_id": ObjectID(doc["_id"])}, {"is_processed", True})
但我面临的问题是,在计算机B中,我有时会将处理过的文档放入“全部文档”光标中。我假设这与MongoDB复制过程有关


有没有更好的方法来处理这个问题?我是否可以强制计算机B获取收藏的更新版本?

您应该知道MongoDB中的事实:

读取操作可能会丢失在读取操作过程中更新的匹配文档


您可以阅读更多信息。

谢谢!这看起来正是我所面临的!然而,他的修正不适用于我的问题,有没有其他方法可以解决这个问题?我应该在更新后添加延迟吗?如果是,那么您认为我需要多少延迟?@Dammi:在我的业务案例中,我使用Redis进行缓存,而不是使用MongoDB进行插入和读取。然后每5分钟,我将它们写入db。