[mongodb] mongoose增删改查
来源:互联网 发布:2016阿里巴巴刷单软件 编辑:程序博客网 时间:2024/05/16 09:24
安装Mongoose
$ npm install mongoose
连接数据库
var mongoose = require('mongoose');mongoose.connect('mongodb://localhost/test');
定义你的schema
$ npm install mongoose
var mongoose = require('mongoose');mongoose.connect('mongodb://localhost/test');
这里的schema相当于模型,但是mongoose里面除了schma外还有一个model的概念。可以先暂时这样理解:我们首先定义schema,然后再由schema生成model,这个时候的model才拥有了与数据库交互的方法。
我们先定义一个博文的schema,如下。
var blogSchema = new Schema({ title: String, author: String, body: String, comments: [{ body: String, date: Date }], date: { type: Date, default: Date.now }, hidden: Boolean, meta: { votes: Number, favs: Number }});
我们传递给mongoose的Schema构造器的对象结构中,key代表我们定义的属性名称,value则是这项属性的类型。目前mongoose允许的几种类型有:
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
这些类型中,除了Mixed、ObjectId是Schema.Types的属性外,其它都是javascript自有的属性。
定义完schema之后,我们由它生成model。
var Blog = mongoose.model('Blog', blogSchema);
之后当我们需要初始化一条博文的记录的时候,我们就可以这样初始化:
var blog = new Blog({ title: 'this is my blog title', author: 'me', body: 'the body of my blog. can you see that?' });
数据库操作
定义完模型之后,我们就可以进行记录的增删查改了。mongoose的增删查改十分简单,以我们上一节的Blog模型为例,当我们初始化了一条博文的记录的时候,并没有将它保存进数据库中。这个时候,我们只要调用blog实例的save方法就可以将记录插入数据库中了。
blog.save();
还可以给save方法传递一个错误回调函数,如果保存过程中发生错误将会调用该函数。
另外一种保存记录的方法是使用我们之前定义好的Blog对象,调用它的create方法:
Blog.create({ title: 'another blog title', author: 'still me', body: 'the blog body again!' }, function (err, small) { if (err) return handleError(err); // saved!});
数据库中有了记录,下一步可能就是需要做查询了。例如,查询作者“me”的文章。一种方法是:
Blog.find({ author: 'me' }).exec(callback);
另一种方法是:
Blog.find({ author: 'me'}, callback);
基本上所有涉及到查询的模型方法都有这样两种形式的查询方式,一种是不往查询方法中传递回调函数,这时查询方法不会立即执行查询,而是返回一个query对象,用户可以再在query对象上修改查询条件,直到执行exec(callback)方法;而第二种是往查询方法中传递回调函数,这时查询方法立即执行。
推荐使用前者,因为这样方便指定复杂的条件以及用于链式调用。例如我可以找出这样一篇博文:
Blog.find({ author: 'me' }).where('title').equals('this is title').where('meta.votes').gt(17).lt(66).limit(10).sort('-date').select('title author body').exec(callback);
现在我们插入了数据,并且可以查询了,接下来就是删除一些我们不需要的记录了。代码也还是比较简单:
Blog.remove({ author: 'me' }, function (err) { if (err) return handleError(err); // removed!});
最后就是更新了。在mongoose里,模型的update方法是只做更新,并不会返回对象。如果需要获取要更新的对象,要使用模型的findOneAndUpdate方法。
Blog.update({ author: 'me' }, { title: 'new title' }, { multi: true }, function (err, numberAffected, raw) { if (err) return handleError(err); console.log('The number of updated documents was %d', numberAffected); console.log('The raw response from Mongo was ', raw);});
- [mongodb] mongoose增删改查
- 【Mongoose】Mongoose增删改查
- mongoose增删改查
- NODEJS mongoose 增删改查
- MongoDB增删改查
- mongodb增删改查
- MongoDB增删查改
- mongodb 增删改查
- mongodb增删改查
- mongodb增删改查
- MongoDB增删改查
- MongoDB增删改查
- mongodb增删改查
- MongoDB增删查改
- express+mongoose+jade页面增删改查
- nodejs+mongoose简单关联+增删改查
- mongoose 增删改查 基础篇
- [mongo] mongoose增删改查操作
- [linux]ubuntu设置ip和dns
- 简单的登录验证
- 【慕课笔记】PHP面向对象编程——高级实践(DAY 3)
- 解决Win7 vmware ubuntu无线上网的问题(通过桥接)
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round]
- [mongodb] mongoose增删改查
- Repeater控件(1)
- cf B. Finding Team Member (STL_优先队列)
- XCode编译器里有鬼 – XCodeGhost样本分析
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 如何写面向互联网公司的求职简历
- (Linux)sphinx检索Coreseek中文全文检索引擎安装和使用
- JS
- 开机启动虚拟机