Mongo:无法更新Mongodb行

时间:2013-01-20 16:09:49

标签: mongodb

我正在尝试更新Mongo DB中的一行。 我有一个名为users

的集合
db.users.find()

{ "_id" : ObjectId("50e2efe968caee13be412413"), "username" : "sss", "age" : 32 }

我正在尝试使用用户名为Erinamodobo更新行,并将年龄修改为55

我尝试过以下方式,但它不起作用。

db.users.update({ "_id": "50e2efe968caee13be412413" }, { $set: { "username": "Erinamodobo" } });

请让我知道我在哪里犯了错误?

3 个答案:

答案 0 :(得分:2)

如果您正在使用mongo shell,则将_id作为ObjectId传入,否则,它将找不到现有用户。

db.users.update({"_id": ObjectId("50e2efe968caee13be412413")},
     { "$set" :
          { "username": "Erinamodobo", "age" : "55" }})

答案 1 :(得分:1)

使用此查询,您将更新名称本身。

请注意,更新的语法如下:

 db.COLLECTION.update( {query}, {update}, {options} )

其中query选择要更新的记录,update指定要更新的字段的值。

因此,在您的情况下,正确的命令是:

 db.users.update({ "name": "Erinamodobo" }, { $set: { "age": 55 } });

但是,我建议你阅读mongodb文档,写得很好(http://docs.mongodb.org/manual/applications/update/

答案 2 :(得分:0)

作为@WiredPrairie的延伸,尽管他说的是正确的答案,但他并没有真正解释。

OjbectId不是字符串,实际上是Object,因此要按Object进行搜索,您必须提供相同类型的Ojbect,即此处为ObjectId

db.users.update({ "_id": ObjectId("50e2efe968caee13be412413") }, { $set: { "username": "Erinamodobo" } });

对于您从DateNumberLong使用的任何特定BSON类型,您需要将参数包装在该类型的Object中。