Python MongoDB查询返回错误结果
我有两台计算机与同一个MongoDB集合通信。我将给出一个简单的示例,说明它们的功能,我使用PyMongo作为CLI接口 计算机A: 每1s: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
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。