2012-03-24 44 views

回答

14

代碼

> user = db.users.findOne({'nickname': 'user1'}) 
> user.nickname = 'userX' 
> delete user['_id'] 
> db.users.insert(user) 

說明

你需要找到用戶對象,並把它放入變量。比你需要修改你想要的屬性,比你需要插入整個對象作爲新的。要達到該目的,您需要刪除對象已有的_id屬性。而不僅僅是使用insert來創建新的。

+0

這是偉大的,謝謝 – 2012-03-24 13:53:49

+0

@ LucaG.Soave歡迎您!謝謝:) – lig 2012-03-24 13:56:40

+0

@ LucaG.Soave你的更新爲我的代碼大幅改變 最初的想法是不刪除'user1'。 – lig 2014-04-22 14:23:44

2

_id字段是必填字段,我們不能像這樣刪除它。我所做的是調用toJSON()到返回的對象,然後刪除_id。

var rObject = dbObject.toJSON(); 
delete rObject._id; 
db.insert(rObject); 
5

不要刪除_id屬性;由於某些原因,某些數值會丟失type。例如,整數轉換爲雙精度。

使用this solution

var user = db.users.findOne(...) 
user._id = new ObjectId() 
// set other properties 
db.users.insert(user) 
+0

這個答案應該得到更多的關注... – frhd 2017-02-16 00:13:25