2013-08-17 96 views
1

模式:更新在貓鼬一subdoc的陣列沒有得到家長

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 
      }) 
+0

你有沒有看[findAndModify](http://docs.mongodb.org/manual/reference/command/ findAndModify /)這將允許您在一個操作中查找文檔並更新其中的值。 –

+0

有沒有在Mongoose中使用'fireAndModify'來做類似的事情的例子?謝謝 – fusio

+0

我會這樣做的方式是在mongo shell中嘗試命令,一旦它在那裏工作,你應該能夠將它幾乎相同地轉移到貓鼬上。 –

回答

1

它的工作原理..

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

感謝@阿利斯泰爾 - 尼爾森