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使用简记的更多相关文章

  1. RangePartitioner 实现简记

    摘要: 1.背景 2.rangeBounds 上边界数组源码走读 3.RangePartitioner的sketch 源码走读 4.determineBounds 源码走读 5.关于RangePart ...

  2. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  3. 在mongoose中使用$match对id失效的解决方法

    Topic.aggregate( //{$match:{_id:"5576b59e192868d01f75486c"}}, //not work //{$match:{title: ...

  4. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  5. mongoose数据库连接和操作

    var mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/hometown'); var db = ...

  6. mongoose 和 mongoDB

    第三方学习地址:http://blog.csdn.net/foruok/article/details/47746057 下载mongoDB https://www.mongodb.com/downl ...

  7. Nodejs之MEAN栈开发(三)---- 使用Mongoose创建模型及API

    继续开扒我们的MEAN栈开发之路,前面两节我们学习了Express.Jade引擎并创建了几个静态页面,最后通过Heroku部署了应用. Nodejs之MEAN栈开发(一)---- 路由与控制器 Nod ...

  8. Mongoose Schemas定义中timestamps选项的妙用

    在Node.js中使用MongoDB少不了Mongoose. 假设有如下Mongoose Schemas的定义: var ItemSchema = new mongoose.Schema({ biz: ...

  9. Mongodb 数据类型及Mongoose常用CURD

    前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...

随机推荐

  1. 这套C#编码规范写不错

    自己总结的C#编码规范--1.命名约定篇:http://www.cnblogs.com/luzhihua55/p/CodingConventions1.html 自己总结的C#编码规范--2.命名选择 ...

  2. 51nod 1574 排列转换(贪心+鸽巢原理)

    题意:有两个长度为n的排列p和s.要求通过交换使得p变成s.交换 pi 和 pj 的代价是|i-j|.要求使用最少的代价让p变成s. 考虑两个数字pi和pj,假如交换他们能使得pi到目标的距离减少,p ...

  3. [cogs1065]绿豆蛙的归宿

    1065. [Nescafe19] 绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点.到达每一个顶点时,如果有K条离开该点的道路, ...

  4. 【比赛】HNOI2018 排列

    这题原题... 这题题面七绕八绕,有点麻烦,反正最后转化就是一棵树,每个点有一个值,要把所有点选完,要求选择一个点必须是它的父亲和祖先已经全部被选了,贡献是这个点的权值乘上它被选择的排名 如果一个点是 ...

  5. 【比赛】HNOI2018 游戏

    考试的时候线段树区间查询的return条件打成了l==r....于是光荣爆20(线段树都不会打了?) 看膜博士的题解 #include<bits/stdc++.h> #define ui ...

  6. Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

    2016年伊始,有了VR虚拟现实硬件设备:  暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的O ...

  7. 关于Centos的yum安装LAMP

    Step1.配置网易的源 在mirrors.163.com中找到centos的帮助信息,完成源的更新配置,如图1,图2,图3所示. 图1 图2 图3 Step2.然后安装PHP+MySQL+apach ...

  8. arp 投毒实验

    1.查看kali2.0和kali2.0.0的IP地址,如图1和图2,其中192.168.1.133作为攻击者,192.168.1.109作为PC访问FTP服务器192.168.1.234 图1 图2 ...

  9. HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)

    HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...

  10. 【极值问题】【CF33C】 Wonderful Randomized Sum

    传送门 Description 给你一个数列\(A\),你可以选择任意一个前缀和任意一个后缀,前缀后缀可重合.给他们乘\(-1\).求最大能获得的序列和. Input 第一行是一个数\(n\)代表数列 ...