官方原版:http://mongoosejs.com
引用请注明出处和转载请注明出处
Models
Modes是由Schema编译而成的假想(fancy)构造器,具有抽象属性和行为。Model的每一个实例(instance)就是一个document。document可以保存到数据库和从数据库返回。document的创建和搜索均可以通过操作model完成。
定义你的第一个Model
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);
第一个参数是Model对应的collection名称的但是形式。因此,对于上面的实例,Tank model对应名称为tanks的collection。Model是由Schema编译生产的,在调用.model()之前,需要先定义好Schema。
创建documents
Documents是Model的实例,创建和保存document到数据库非常的简单:
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!
})
Document的创建和删除必须在mongoose connection建立之后才会执行。每一个model会关联一个connection,如果你使用mongoose.model()
,创建的model会使用默认的mongoose connection。
mongoose.connect('localhost', 'gettingstarted');
如果你自定义了一个connection,可以使用该connection的model()
函数。
var connection = mongoose.createConnection('mongodb://localhost:27017/test');
var Tank = connection.model('Tank', yourSchema);
Querying
Mongoose查询文档非常的便利,它提供非常丰富的MongoDB查询语法。可以使用models的find
,findById
,findOne
,或者where
等静态语法查询。
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
更详细的Query api使用方法请查看querying章节。
Removing
Models提供remove
静态方法用来移除所有符合提交的documents。
Tank.remove({ size: 'large' }, function (err) {
if (err) return handleError(err);
// removed!
});
Updating
每个model都有自己的update
方法用于修改数据库中的documents,并且该方法不会返回被修改的文档。更多详情可查看API文档。
更多
API docs还提供了很多其他的可用方法,例如count, mapReduce, aggregate, and more.