[英]MongoDB update multiple documents
架構:
{
name: String,
available: Boolean,
for: String
}
有“一個”:
{
name: "a",
available: true,
for: ["b", "c"]
}
和“b”:
{
name: "b",
available: true,
for: ["a", "b]
}
如果我更新a.available = false,我應該同時更新b.available = false。 如何更新兩個文件,並確保在更新“a”和“b”之間沒有其他進程/線程獲得“b”。
MongoDB不支持原子事務。 因此,如果您需要在第二次更新失敗時進行第一次更新“撤消自身”,那么您運氣不好。
但是,在某些有限的情況下,MongoDB確實支持隔離更新。 更新不是全部或全部,但MongoDB將保證在您寫入的過程中沒有其他人寫入該集合。
幾個主要警告:
根據您提供的示例,您的案例可能符合條件。
以下是描述隔離更新的文檔。
基本上,當名稱為“a”或“b”時,您將要發出類似於以下內容的更新,將“available”原子設置為false:
db.blah.update({"name": {"$in": ["a", "b"]}, "$atomic": 1}, {"available": false});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.