ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 模型(models) > 原文:[Models](http://mongoosejs.com/docs/models.htm) > 翻译:小虾米(QQ:509129) ## Models 从我们的Schema定义[模型](http://mongoosejs.com/docs/api.html#model-js)的构造函数编译。实例这些模型代表[文档](http://mongoosejs.com/docs/documents.html)可以从我们的数据库中保存和检索。从数据库中依靠这些模型来操作所有文档创建和检索。 ### 编译你的第一个模型 ``` 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的查找文档很容易,它支持[丰富](http://www.mongodb.org/display/DOCS/Advanced+Queries)的查询MongoDB语法。文件可以使用每个模型中使用 [find](http://mongoosejs.com/docs/api.html#model_Model.find),[findById](http://mongoosejs.com/docs/api.html#model_Model.findById),[findOne](http://mongoosejs.com/docs/api.html#model_Model.findOne),或者[where](http://mongoosejs.com/docs/api.html#model_Model.where),静态方法。 ``` Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback); ``` 查看关于如何使用[查询](http://mongoosejs.com/docs/api.html#query-js)API的详细信息的[querying](http://mongoosejs.com/docs/queries.html)章节。 ### 删除 模型有一个静态删除方法,可用于移除所有匹配条件的文档。 ``` Tank.remove({ size: 'large' }, function (err) { if (err) return handleError(err); // removed! }); ``` ### 更新 每个模型都有自己的更新方法,用于修改数据库中的文档,不将它们返回到您的应用程序。 详细看[API](http://mongoosejs.com/docs/api.html#model_Model.update)文档。 如果你想要更新一个文档数据库,并将结果返回给你的应用程序,使用[`findOneAndUpdate`](http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate)代替。 ### 然而,更多的 API文档包含了许多额外的方法,像 [count](http://mongoosejs.com/docs/api.html#model_Model.count),[mapReduce](http://mongoosejs.com/docs/api.html#model_Model.mapReduce),[aggregate](http://mongoosejs.com/docs/api.html#model_Model.aggregate),[更多](http://mongoosejs.com/docs/api.html#model_Model.findOneAndRemove)。