文档(documents)

原文:Documents 翻译:小虾米(QQ:509129)

Documents

Mongoose文档代表了文档存储在MongoDB的一对一映射。每个文档都是它的模型的一个实例。

检索

有许多方法从MongoDB文档检索。我们不会涵盖在在这一部分中。查看查询详细信息的‘querying’章节。

更新

有一些方法来更新文档。我们先看看使用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,然后发出更新命令(通过触发调用保存)。然而,如果我们不需要的文档在我们的应用程序中返回,只需要更新一个属性直接在数据库、Model#update对我们是正确的:

Tank.update({ _id: id }, { $set: { size: 'large' }}, callback);

如果我们的应用程序需要文档返回,则需要另一个方法,往往更好,选项:

Tank.findByIdAndUpdate(id, { $set: { size: 'large' }}, function (err, tank) {
if (err) return handleError(err);
res.send(tank);
});

findAndUpdate/Remove 静态方法都在最多一个文档中进行更改,并返回它只有一个调用数据库。有几种不同的findandmodify主题。阅读API文档的更多细节。注意findAndUpdate/Remove不执行任何钩子或验证在在数据库中进行更改 之前。如果你需要钩子和验证,首先查询文档,然后保存它。

译者注:findByIdAndRemovefindOneAndUpdatefindAndModify

验证

在保存文档之前,文档进行了验证。详情阅读API文档validation章节。

下一步

既然我们已经掌握了文档,让我们看看子文档