在Mongoose模型中保存一个修改后的文档(带有修改后的子文档数组)
我现在的代码是:
User.findOne( { "subUsers.email" : userEmail }, { subUsers : { $elemMatch: { email : userEmail } } }, function(err, user){ if(user){ var information = user.subUsers[0].information.id(id); information.arrayA.push({someId : "something"}); user.save(callback(err)); // Also tried information.save() // without luck } callback(err); } );
这不会返回任何types的错误,但是当我检查数据库时,新的数组元素没有被推(整个文档是完整的)。
任何帮助将非常感激。 谢谢!
你可能应该检查出第一个常见问题,在这里: http : //mongoosejs.com/docs/faq.html
Mongoose doesn't create getters/setters for array indexes; without them mongoose never gets notified of the change and so doesn't know to persist the new value. The work-around is to use [MongooseArray set][1] available in Mongoose >= 3.2.0.
所以在你的情况下,你想添加这第三行
var information = user.subUsers[0].information.id(id); information.arrayA.push({someId : "something"}); user.subUsers.set(0, information);
或类似的东西。
截至今天,mongoose目前还没有准备好以primefaces方式进行多层嵌套。
因此,即使它返回到一种关系数据库,在这种情况下,最好将嵌套拆分为至less2个集合,并使用自动生成的ObjectId进行引用。