簡體   English   中英

MongoDB查詢返回錯誤結果

[英]MongoDB query returning wrong results

我有兩台與同一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來獲取集合的“更新”版本嗎?

您應該知道MongoDB中的事實:

讀取操作可能會丟失在讀取操作過程中更新的匹配文檔。

您可以閱讀David Glasser的帖子以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM