【问题标题】:Updating a subdoc array in Mongoose without getting the parent在不获取父级的情况下更新 Mongoose 中的子文档数组
【发布时间】:2013-08-21 20:18:53
【问题描述】:

架构:

var viewSchema = new Schema({
    active: Boolean
    , path: String
})

var pageSchema = new Schema({
    name: String
    , desc: String
    , url: String
    , views: [viewSchema]
})

为了向现有页面添加新视图,我正在做:

Page
    .findOne({ id: pageId })
    .exec(function (err, page) {
        page.views.push({ path: path })
        page.save(function(err) {
           //saved
        })
    })

有没有办法在不实际获取页面的情况下做同样的事情?

Page.update({ id: pageId }
          , { SOMETHING }
          , function(err){ 
             //updated 
          })

【问题讨论】:

  • 你看过findAndModify这将允许你在一个操作中找到文档并更新其中的值。
  • 有没有在 Mongoose 中使用 fireAndModify 的例子来做类似的事情?谢谢
  • 我会这样做的方法是在 mongo shell 中尝试该命令,一旦它在那里为您工作,您应该能够将它几乎与 mongoose 相同。
  • 看看猫鼬documentation 你应该对你的提议没问题:Page.update({ _id: id }, { $push: { "page.views": path }}, callback);
  • 不起作用:Page.update({ _id: page.id},{ $push: { "page.views": { path: "#page", active: true } } })

标签: javascript mongoose


【解决方案1】:

有效..

Page.update({ _id: page.id},{ $push: { "views": { path: "#page", active: true } } })

感谢@Alistair-Nelson

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2015-11-29
    • 2017-08-31
    • 2022-06-10
    • 2023-02-25
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多