mongoose使用简记
mongodb中集合相当于表,常用指令
mongo 进入数据库
use yourdatabase 来选择你的数据集,这个跟关系型中的一样
show collections 来查看你数据集中的表,collection就是关系型中的表
db.createCollection(name,option) name是表名,option(可选)指定有关内存大小和索引选项
db.yourcollection.find() 来查找信息,()里面是查询参数,不填则返回表中全部信息。可以填一个或多个字段,比如{username:"admin“}
db.yourcollection.remove()删除一条或多条信息,但保留表db.yourcollection.drop()删除整个表
db.yourcollection.insert(item)item就是你要插入的数据
db.yourcollection.update(query,updatedata)query就是跟find一样,先找到你要更新的地方,updatedata可以是下面这样
$set:{'title':'New MongoDB Tutorial'}}MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置'multi' 为true {multi:true}
mongodb一个比较好的学习网站 http://www.yiibai.com/mongodb/
mongoose其实就是mongodb的一个封装库。记录一下mongoose的简单使用。
连接:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');其中test是你database的名字
创建Schema,就是相当于创建表的结构,跟关系型的一样
- var UserSchema = mongoose.Schema({
- name: String
- })
然后将Schema变成模型(Model),这样你就可以操作Model对象了
- var UserInfo = mongoose.model('UserInfo', UserSchema)
这个过程会在数据库中建表,表名就是model方法中的第一个参数+s,比如这个就是userinfos(表名不区分大小写)
添加一条新数据:
- var newUser = new UserInfo({ name: 'fluffy' });
- newUser.save(function (err, user) {
- if (err) return console.error(err);
- });
这里匿名函数的第二个参数是插入成功后返回的对象本身
查找:
- UserInfo.find({username:username},function (err, user) {
- if (err) return callback(err) ;
- callback(null,user) ;
- });
和mongodb的基本一致需要查找的参数,返回的是对象数组,就算你知道数据库中只有一个对象,也是返回长度为1的数组,如果要只返回一个对象利用findOne方法。
在做应用的时候很有可能有这样的需求就是,我得到了一份用户的名单,我希望传入名单数组得到所对应的这群用户的信息,说白了就是查询条件是一个字段的数组。那么方法如下:
- UserInfo.find().where('username').in(arr).exec(function(err,UserList){
- if(err){
- callback(err) ;
- }else {
- callback(null,UserList) ;
- }
- });
其中where中填写的就是字段,in(arr)中的arr就是那个用户名数组
更新:
- UserInfo.update({username: data.username}, {$set: {username:“admin”}}, function (err, result) {
- callback(result);
- });
很有可能遇到Number的字段,然后你想让它在原有的基础上加1或者减1,下面是个减1的例子
- UserInfo.update({username: data.username}, {$inc: {follower_count:-1}}, function (err, result) {
- console.log("updateFollower" + result);
- callback(result);
- });
计数:
- UserInfo.count(data, function(err,count){
- callback(count) ;
- });
删除和查找差不多,就不说了,mongoose的文档网站 http://www.nodeclass.com/api/mongoose.html
还有就是我作为萌新遇到的问题:这些操作都是异步的!异步这个思想在node中很重要,所以你一定要在回调函数里对数据进行处理。
mongoose使用简记的更多相关文章
- RangePartitioner 实现简记
摘要: 1.背景 2.rangeBounds 上边界数组源码走读 3.RangePartitioner的sketch 源码走读 4.determineBounds 源码走读 5.关于RangePart ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 在mongoose中使用$match对id失效的解决方法
Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- mongoose数据库连接和操作
var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...
- mongoose 和 mongoDB
第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...
- Nodejs之MEAN栈开发(三)---- 使用Mongoose创建模型及API
继续开扒我们的MEAN栈开发之路,前面两节我们学习了Express.Jade引擎并创建了几个静态页面,最后通过Heroku部署了应用. Nodejs之MEAN栈开发(一)---- 路由与控制器 Nod ...
- Mongoose Schemas定义中timestamps选项的妙用
在Node.js中使用MongoDB少不了Mongoose. 假设有如下Mongoose Schemas的定义: var ItemSchema = new mongoose.Schema({ biz: ...
- Mongodb 数据类型及Mongoose常用CURD
前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...
随机推荐
- 软工网络15团队作业4-DAY5
每日例会 昨天的工作. 张陈东芳:界面排版优化 吴敏烽:界面排版优化 周汉麟:继续根据商品编号来获取商品资料方法调试 林振斌:继续输出最近浏览记录的方法调试 李智:界面排版优化 全体人员:界面优化,初 ...
- 使用Log4在测试过程中打印执行日志 及配置log4j.properties!
http://zengxiantao.iteye.com/blog/1881706 1.环境配置:到网上下载log4j-1.2.17.jar包!完后 添加到 项目的build path 中即可! 2. ...
- 访问控制列表-细说ACL那些事儿(ACL应用篇)
1.ACL应用范围 通过前两期的ACL理论学习,大家知道ACL并不能单独完成控制网络访问行为或者限制网络流量的效果,而是需要应用到具体的业务模块才能实现上述功能. 那么ACL到底可以应用在哪些业务中呢 ...
- 【刷题】清橙 A1295 necklace
试题来源 清华大学2011年百名信息学优秀高中学子夏令营 问题描述 有人打算送给你一条宝石项链,包含了N颗五颜六色(一共有M种颜色)的宝石.因为本问题中你只关心每个宝石的颜色,而且项链现在两头还没有接 ...
- SMBv3空指针引用dos漏洞复现
0x01 前言 去年年底,当设置一个模拟器来定位SMB协议时,发现了一个如此简单而又非常有效的攻击大型企业的漏洞.TL; DR:一个拒绝服务错误允许BSOD协议向Windows 8.1和Windows ...
- 升级系统后maxvim不能用,重新下载编译个
1. 获取macvim源代码git clone https://github.com/b4winckler/macvim.git 2 配置及编译 编译选项 ./configure --with-fea ...
- 【bzoj4872】【shoi2017】分手即是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 746 Solved: 513[Submit][Statu ...
- python基础----再看property、描述符(__get__,__set__,__delete__)
一.再看property 一个静态属性property ...
- Linux之选取信息命令介绍与应用20170331
在介绍选取信息命令之前,说一下管道符“|”与tr命令,因为在使用多个命令一起的时候经常用到它. 一.利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入. ...
- json数据的格式
JSON的具体形式 1.对象是一个无序的“‘名称/值’对”集合.一个对象以“{”开始,以“}”结束.每个“名称”后跟一个“:”,“‘名称/值’对”之间使用“,”分隔. 举个例子: { name:&qu ...