MongoDB查询返回错误的结果

时间:2017-11-03 17:04:51

标签: python mongodb pymongo azure-cosmosdb

我有两台与同一MongoDB集合通信的计算机。我将举例说明他们的工作,我使用PyMongo作为CLI界面

电脑A: 每1:

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中,我有时会将“is_processed”True的文档转换为“all_docs”游标。我假设这与MongoDB复制过程有关吗?

有没有更好的方法来解决这个问题?我可以以某种方式“强迫”计算机B获得该集合的“更新”版本吗?

1 个答案:

答案 0 :(得分:1)

您应该知道MongoDB中的事实:

  

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

您可以阅读David Glasser's post了解详情。