2017-01-09 94 views
0

我有一個集合data有大約30萬項,並且其文件看起來像的NodeJS-的MongoDB:更新文檔結構集合中的所有文件

{ 
    "_id" : ObjectId("5xxx85"), 
    "user_id" : "1", 
    "name" : "test", 
    "user_private" : "0" 
} 

現在我想更新這個集合中的所有文件和新的文件將看起來像

{ 
    "_id" : ObjectId("5xxx85"), 
    "rid" : "1", 
    "user_name" : "test", 
    "is_private" : "private", 
    "is_moderator" : "true", 
    "amount" : "11111" 
} 

即我需要添加新的領域,更新字段名,並檢查是否user_private = 0然後把is_private as private要不然就把is_private as not_private

我有點新,所以我無法得到如何有效地做到這一點,因爲條目是在300k左右。 請建議一些方法,僞代碼將非常有幫助

回答

1

要更新文檔的過濾條件。檢查下面的僞代碼並按照link to read more

你需要有一個現有的價值user_private

db.messages.updateMany([ 
    { "user_private" : 0 }, // filter. 
    { $set: { 
     "user_private" : "private", 
     "is_moderator" : "true" 
    } 
    }, // update. 
    { 
    upsert: true 
    } 
]); 

upserts - 創建一個新的文件,如果沒有文件匹配匹配基於所提供的過濾器,並更新參數過濾器,過濾器或更新文檔。

+0

很酷,但是我需要添加新字段並更改一些現有字段的名稱以及 – iamsaksham

+0

您也可以執行此操作 – akinjide

+0

我更新了問題,我也需要更改該特定字段的名稱。而且我還需要對所有文檔進行迭代。它讓我感到非常困惑。 – iamsaksham

相關問題