我正在尝试更新Mongo DB中的一行。 我有一个名为users
的集合db.users.find()
{ "_id" : ObjectId("50e2efe968caee13be412413"), "username" : "sss", "age" : 32 }
我正在尝试使用用户名为Erinamodobo更新行,并将年龄修改为55
我尝试过以下方式,但它不起作用。
db.users.update({ "_id": "50e2efe968caee13be412413" }, { $set: { "username": "Erinamodobo" } });
请让我知道我在哪里犯了错误?
答案 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" } });
对于您从Date
到NumberLong
使用的任何特定BSON类型,您需要将参数包装在该类型的Object
中。