当前位置: 首页 > 知识库问答 >
问题:

更新MongoDB对象字段

董子航
2023-03-14

我已经搜索和尝试了许多答案,但我似乎无法让这个工作。我在MongoDB中有一个用户(db.users...)我试图在一个特定的文档中更新一个名为“角色”的字段。如果我执行:

db.users.find();
{ "_id" : "fDx2g34G8vxsDu3vf", "createdAt" : ISODate("2014-06-03T16:31:47.382Z"), 
  "emails" : [  {  "address" : "andrewmlarking@gmail.com",  "verified" : false } ], 
  "profile" : { "name" : "Admin", "role" : "user", "division" : "0", "enrolled" : "false" }, 
  "services" : { "password" : { "srp" : { "identity" "dEad06c_5mjzsprUzgRyh6tB66OiaybdLzbnxFzO1xh",
  "salt" : "zqWsh etc etc
db.users.update({_id:"2xnoy3jqcHCaFp7Br"}, { role:"admin"});

assert失败:需要对象错误:在printStackTrace(src/mongo/shell/utils.js:37:15)在doassert(src/mongo/shell/assert.js:6:5)在assert(src/mongo/shell/assert.js:14:5)在dbCollection.update(src/mongo/shell/collection.js:220:5)在(shell):1:10在dbCollection.

有什么想法吗?

谢了。

共有1个答案

孔俊捷
2023-03-14

首先,如果您试图更新概要文件子文档的角色字段,您的语法是关闭的。应该是:

db.users.update({_id:“2xnoy3jqchcafp7br”},{$set:{“profile.role”:“admin”}})

否则,您将删除文档的所有其他字段。

无论如何,我强烈建议您查看MongoDB文档以获得更新:

http://docs.mongodb.org/manual/tutorial/modify-documents/

 类似资料:
  • 我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。

  • 互联网上充斥着处理数组的资源,但对象通常更适合数据,而且似乎更高效。 我想在动态字段名下存储键值对象,如下所示: 这样做似乎比保留一个包含所有语言的数组并对其进行过滤以获取给定语言的所有语言条目更有效。 我的问题是:如何使用猫鼬将键值对插入到具有动态名称的对象中?对象是否需要存在,或者如果在一个操作中不存在,我可以创建它吗? 我试过这个: 但不管我是否有一个空对象开始,都没有运气:。 奖励:我应该

  • 我正在使用Android MVVM架构和LiveData。我有一个这样的物体 我的视图模型是这样的 如何确保用户对象中的某个字段发生更改时,观察员收到通知?顺便说一句,重要的是要将这些数据保存在单独的对象中,而不是在ViewModel中使用字符串等主要值。

  • 我正在与AngularJS项目工作,我有以下问题。我有个密码: form.html: 使用这段代码,someVariable不会显示,但当我将ng-model更改为someVariable.SomeField时,我试图显示它...管用!有人能解释一下为什么吗?

  • mongodb新手,尝试更新文档的多个数组对象字段。没有得到预期的结果 文档结构: 基于id需要更新日期 Spring启动代码 但是当我运行这个查询时,它返回null。有人能帮我吗?谢谢,我也试过了

  • 我想在对象的现有状态上合并/覆盖新字段,这样param1就不会被删除 这样做 将导致MongoDB完全按照要求执行,并将some_key设置为该值。替换旧的。 我正在使用Java客户机,但任何示例都将受到赞赏