鍍金池/ 問答/數據庫/ 數據庫累加更新,有什么不飆高內存的好方案

數據庫累加更新,有什么不飆高內存的好方案

如題,我的問題是,比如有一張表,里面有5條數據,分別這樣

/* 1 */
{
    "_id" : ObjectId("5b50807f334ca1071be530aa"),
    "a" : 趙六,
    "a" : 2
}

/* 2 */
{
    "_id" : ObjectId("5b508089334ca1071be530ac"),
    "a" : 王五,
    "b" : 3
}
/* 3 */
{
    "_id" : ObjectId("5b508092334ca1071be530ae"),
    "a" : 張三,
    "b" : 5
}

/* 4 */
{
    "_id" : ObjectId("5b508092334ca1071be530ae"),
    "a" : 李四,
    "b" : 4
}

首先我的目的是排序,就拿我們平常的吧某條數據查詢條件提的比別的高,就拿第三條來說,張三那條,(假設查詢是按照b字段找然后排序輸出)現在他的b字段是5,我想把它提到1,好的,馬上更新,然后張三上去了,其他的我必須一次累計的吧其他數據也等查詢排序,那么,問題來了

我得先從b字段找到除了張三那條的其他所有數據,然后排序(這不是重點),重點來了,我得依次更新,我能有的只能是for,然后累加,這樣的方案,數據少還得對付,要是幾萬條,豈不是藥丸???內存飆高,直接GG。而且是是用的nodejs,v8內存本來就吃緊,這么干就是在投毒自殺,各位有什么方案,指教一下

回答
編輯回答
薄荷綠

你要的效果是改變某條數據的排序順序,并不意味著需要修改所有的排序碼。

如:現有的排序為 a 1, b 2, c 3, 如果想把c的排序改到第一位,那么吧c對應的數字改為0就可了,不需要更改其他數據。

2018年1月11日 12:53