2012-03-24 43 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