mongoose 的 document 与MongoDB 的 document 一一对应。每个document都是它的model的实例。
在MongoDB中有很多方法检索document。我们不会在这一节中涉及。详细请看 querying 节。
有很多种方法修改 document。我们首先看传统方法findById。
Tank.findById(id, function (err, tank) { if (err) return handleError(err); tank.size = ‘large‘; tank.save(function (err) { if (err) return handleError(err); res.send(tank); }); });
这种方法包括先从Mongo检索document,然后发出修改命令(通过调用保存触发)。可是,如果我们不需要在应用程序中返回document而是只不过想直接修改数据库中的属性,Model#update 适合我们。
Tank.update({ _id: id }, { $set: { size: ‘large‘ }}, callback);
如果我们想要应用程序中返回document,有一个更好的选项
Tank.findByIdAndUpdate(id, { $set: { size: ‘large‘ }}, function (err, tank) {
if (err) return handleError(err);
res.send(tank);
});
静态方法findAndUpdate/Remove 最多只改变一个document,并只通过一个调用返回到数据库。在 findAndModifu 主题 有 几 种 变化。阅读API文档查看更多细节。注意findAndUpdate/Remove在修改数据库前不执行任何钩子或验证。如果你想要钩子和验证,先检索 document 然后保存它。
document在保存前进行验证。详情阅读API文档或validation节。
原文:http://www.cnblogs.com/surahe/p/5180870.html