【问题标题】:Updating an object in a nested array in Mongoose在 Mongoose 中更新嵌套数组中的对象
【发布时间】:2015-08-30 16:22:06
【问题描述】:

给定以下架构

{ 
  "_id" : ObjectId("55e0ecfa422d86f0a3b37b90"), 
  "username" : "Michael", 
  "hostedEvents" : [ 
    { "_id" : "1", "usersApplied" : [ ] } 
  ],
  "joinedEvents" : [ 
    { "confirmed" : false } 
  ] 
}

我正在尝试将字符串“Lisa”推入 usersApplied 数组

现在我有一个有效的 mongodb 命令,但我想在 mongoose 中执行此操作:

db.users.update({username:'Michael', "hostedEvents._id": "1"},
             {$addToSet: {"hostedEvents.$.usersApplied": {"username":"Lisa"}}});

我尝试在猫鼬中这样做:

Users.update({username:'Michael', "hostedEvents._id": "1"},
{$addToSet: {"hostedEvents.$.usersApplied": {"username":"Lisa"}}});

我正在尝试遵循here的建议

【问题讨论】:

  • 那么问题出在哪里?除此之外,这些操作都没有尝试“推字符串 Lisa”(原文如此)
  • 问题已更新为现在使用“Lisa”。但我真正的问题是如何将 mongodb 命令转换为 mongoose。我的 mongoose 命令不起作用,但我的 mongodb 命令起作用。 mongoose 命令不会抛出错误,它只是不会推送字符串“Lisa”
  • “转换”是什么意思?不需要转换,因为它的工作原理相同。唯一缺少的是回调定义或者你是否想要返回一个承诺。如果您遇到错误或其他一些意外结果(在您的问题中再次没有提到您遇到了什么问题),那么这可能是您的架构定义不正确的原因。请实际说明您的问题,并可能发布您的架构。
  • 这就是我的想法,该模式的工作方式与 mongodb 查询完全相同,我只需将 db.users 更改为用户。但是,这并没有像我预期的那样更新我的数据库,所以我想知道是否有其他正确的方法可以在 mongoose 中执行 mongodb 命令,或者我是否遗漏了一些东西
  • 有没有问题?这真的不是问“我的代码看起来正确吗?”的地方。还有另一个网站:codereview.stackexchange.com

标签: mongodb mongoose


【解决方案1】:

我认为你应该改用 $push

    Users.update({username:'Michael', "hostedEvents._id": "1"},
{$push: {"hostedEvents.$.usersApplied": {"username":"Lisa"}}});

应该可以的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2017-01-24
    相关资源
    最近更新 更多