2013-08-17 3 views
1

схема:Обновление массива subdoc в Mongoose без получения родителя

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

есть пример 'fireAndModify', используемый в Mongoose, чтобы сделать что-то подобное? спасибо – fusio

+0

То, как я это сделаю, это попробовать команду в оболочке монго, как только она работает для вас там, вы должны перенести ее почти одинаково в мангуст. –

ответ

1

Он работает ..

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

благодаря @ Алистер-Нельсон

Смежные вопросы