模型(models)

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

Models

从我们的Schema定义模型的构造函数编译。实例这些模型代表文档可以从我们的数据库中保存和检索。从数据库中依靠这些模型来操作所有文档创建和检索。

编译你的第一个模型

var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);

第一个参数是你的模型集合的单数名称。Mongoose会自动寻找你的模型名称的复数形式。因此,对于上面的示例,模型Tank是用于数据库中的tanks集合的。.model() 功能使得到schema的副本。确信你已经添加了你想要的一切在调用.model()之前!

构建文档

文档是我们模型的实例。创建它们,并保存到数据库是很容易的:

var Tank = mongoose.model('Tank', yourSchema);
var small = new Tank({ size: 'small' });
small.save(function (err) {
if (err) return handleError(err);
// saved!
})
// or
Tank.create({ size: 'small' }, function (err, small) {
if (err) return handleError(err);
// saved!
})

请注意,没有tanks 将创建/删除,直到连接您的模型使用是打开的。每一个模型都有一个关联的连接。当你使用mongoose.model()。你的模型将要使用默认mongoose连接。

mongoose.connect('localhost', 'gettingstarted');

如果你创建一个自定义的连接,使用连接的model()函数代替。

var connection = mongoose.createConnection('mongodb://localhost:27017/test');
var Tank = connection.model('Tank', yourSchema);

查询

对于Mongoosecha的查找文档很容易,它支持丰富的查询MongoDB语法。文件可以使用每个模型中使用 findfindByIdfindOne,或者where,静态方法。

Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);

查看关于如何使用查询API的详细信息的querying章节。

删除

模型有一个静态删除方法,可用于移除所有匹配条件的文档。

Tank.remove({ size: 'large' }, function (err) {
if (err) return handleError(err);
// removed!
});

更新

每个模型都有自己的更新方法,用于修改数据库中的文档,不将它们返回到您的应用程序。

详细看API文档。

如果你想要更新一个文档数据库,并将结果返回给你的应用程序,使用findOneAndUpdate代替。

然而,更多的

API文档包含了许多额外的方法,像 countmapReduceaggregate更多