簡體   English   中英

Mongodb:如何在一次操作中更新一些元素並刪除數組的其余部分?

[英]Mongodb: how to update some elements and remove the rests of an array in an single operation?

對於一個數組,我想更新一些元素並保持數組的大小不大於 N。如何在單個操作中完成? 讓我們舉個例子來說明我的問題:

1)db.test.insertOne({a:[1, 100, 3, 5, 600]});
{ 
    "_id" : ObjectId("5fc5a14e1b800790b21afa65"), 
    "a" : [
        1.0, 
        100.0, 
        3.0, 
        5.0, 
        600.0
    ]
}
2) change it to
{ 
    "_id" : ObjectId("5fc5a14e1b800790b21afa65"), 
    "a" : [
        1.0, 
        100.0, 
        5.0
    ]
}

如上圖,a[2]->5,且N=3,只保留a[0],a[1],a[2]。 我必須在一次操作中完成這些操作以使數據保持一致(不要考慮多個客戶端)我該怎么辦? 謝謝!

在您的情況下,我建議遵循以下邏輯:

  1. 如果 memory 中的數組未更改 - 什么也不做。
  2. 如果您的數組已更改並且它很小,那么只需更新整個數組。
  3. 如果您的數組僅更改了一點並且它非常大,那么在您的應用程序中計算確切的元素更改並為每個人創建具有相應操作的更新(刪除、更新、插入)。 小心,這是一種容易出錯的方法。

如果您的應用程序“經常”遇到第 3 種情況,則意味着您設計了錯誤的數據結構來解決您的問題。

暫無
暫無

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

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