mongoose 文档(二)Models
2016-02-04 02:41
423 查看
Models是从 Schema 定义编译的构造函数。这些 model 的实例代表能从数据库存储和检索的 documents。数据库中所有document的创建和检索都是这些model处理的。
第一个参数是 model 对应的 collection 的单数名称。Mongoose自动寻找model名称的复数版本。因此,如上例,model Tank在数据库中对应tanks collection。model()函数用schema做了一份副本。确保在调用model()之前你已经添加了所有你想要的东西到schema。
注意直到连接到 model 的使用开放为止没有tanks会被创建/删除。在这个案例中我们使用着mongoose.model(),我们打开默认的mongoose collection。
查看querying章节的详细内容来如何使用Query api。
如果你想修改一个在 db 的 document 并返回它到你的应用程序,使用findOneAndUpdate。
1、编译第一个model
var schema = new mongoose.Schema({ name: 'string', size: 'string' }); var Tank = mongoose.model('Tank', schema);
第一个参数是 model 对应的 collection 的单数名称。Mongoose自动寻找model名称的复数版本。因此,如上例,model Tank在数据库中对应tanks collection。model()函数用schema做了一份副本。确保在调用model()之前你已经添加了所有你想要的东西到schema。
2、构建文档
documents 是 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! })
注意直到连接到 model 的使用开放为止没有tanks会被创建/删除。在这个案例中我们使用着mongoose.model(),我们打开默认的mongoose collection。
mongoose.connect('localhost', 'gettingstarted');
3、查询
使用Mongoose查询document是容易的,它支持MongoDB丰富的查询语法。documents可以使用每个model方法( find, findById, findOne)或者是静态方法(where)检索。Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
查看querying章节的详细内容来如何使用Query api。
4、删除
model有一种静态删除方法可用于删除所有匹配条件的document。Tank.remove({ size: 'large' }, function (err) { if (err) return handleError(err); // removed! });
5、修改
每个model有自己的修改方法来修改数据库中的document而不返回到你的应用程序。查看更详细的API文档。如果你想修改一个在 db 的 document 并返回它到你的应用程序,使用findOneAndUpdate。
6、更多
API文档包括需要额外方法可用像 count, mapReduce, aggregate 等。相关文章推荐
- category和extension
- VIEWGOOD(远古)数字化校园建设的应用方案
- Tango学习笔记(二)
- stack related algorithms summary
- Binary tree related algorithms summary
- log4j【2】(Category与Logger )
- Django开发问题~持续收集
- How To Use gflags (formerly Google Commandline Flags)
- 区分连接是mongod 还是mongos 的方式 或者副本集
- 过年GO HOME
- beego之orm多条数据插入
- beego和bee的安装、自动生成API框架
- hdu 1847 Good Luck in CET-4 Everybody! 动态规划/巴什博弈
- 用Beego和beego admin开源框架开发的后台管理系统
- mongoose 文档(一) schemas
- 用的是google 的swing ,二维码生成工具类
- golang rbac框架
- Go 1.6 release party
- CDOJ 1271 Search gold
- golang 移动应用例子 example/basic 源码框架分析