2

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

db.users.find()

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

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

我尝试了以下方法,但它不起作用。

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

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

4

3 回答 3

2

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

db.users.update({"_id": ObjectId("50e2efe968caee13be412413")},
     { "$set" :
          { "username": "Erinamodobo", "age" : "55" }})
于 2013-01-20T16:32:45.147 回答
1

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

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

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

wherequery选择要更新的记录并update指定要更新的字段的值。

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

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

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

于 2013-01-20T16:25:02.443 回答
0

作为@WiredPrairie 的扩展,尽管他陈述了正确的答案,但他并没有真正解释。

TheOjbectId不是字符串,实际上是一个Object这样的搜索方式,Object您必须提供Ojbect相同类型的 an ,即这里的 an ObjectId

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

对于您使用的任何特定 BSON 类型也是如此,DateNumberLong需要将参数包装在Object类型的 s 中。

于 2013-01-20T16:37:53.487 回答