mongodb 安装:
下载源码:【我的机器是64位】
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.7.tgz
解压源码放到安装目录
tar -zxvf mongodb-linux-x86_64-2.6.7.tgz
mv mongodb-linux-x86_64-2.6.7.tgz mongodb
mv mongodb /usr/local/
创建数据和日志目录
cd /usr/local/mongodb
mkdir data
mkdir logs
运行mongod服务
cd bin
./mongod --dbpath=/usr/local/data --logpath=/usr/local/logs/mongodb.log
成功后会输出 all output going to: logs/mongodb.log
打开客户端:
./mongo
MongoDB shell version: 2.0.4
connecting to: test
>
查看数据库
> show dbs
选择或创建(没有就创建)数据库
>use testdb
创建集合
>db.user.insert({name:'zfeig',city:'guangzhou'})
查看集合
>show collections
文档数据操作
1、无条件查找
>db.user.find()或者 db.user.find({}) //查询所有记录
2、指定条件查找[里面的json对象就是查询条件]
>db.user.find({name:'zfeig'}) //查询name=zfeig的记录
>db.user.find({age:35}) //查询age=35的记录
>db.user.find({name:'lis',age:25}) //查询name=lisi and age=25的记录
3、查询指定字段【通过第二个{},指定字段是否显示,字段显示条件为1,不显示条件为0】
>db.user.find({},{name:1,_id:0}) //查询所有记录,但只显示name字段,_id字段不显示
4、魔术方法使用,$gt ,$lt,$gte,$lte,$ne,$in,$or
>db.user.find({age:{$gt:20,$lt:30}}) //查age>20 and age<30的记录
>db.user.find({age:{$gte:20,$lte:30}}) //查age>=20 and age<=30的记录
>db.user.find({age:{$net:30}}) //查age!=30的记录
>db.user.find({age:{$in:[20,25,26,27,28]}}) //查找age in (20,25,26,27,28)的记录
>db.user.find({$or:[{name:'zfeig'},{age:{$gt:30}},{更多条件1},{更多条件2}]}) //查找name=zfeig or age<30 or 更多条件1 or 更多条件2 的记录
5、正则查询
>db.user.find({name:/^li/}) //查找name以li开头的规则匹配的记录
6、limit,skip,sort【1为升序,-1为降序】
>db.user.find({age:{$gt:0}}).order({age:-1}).limit(5) //以age字段降序排列,取出5条记录
>db.user.find({age:{$gt:0}}).order({age:1}) //以age字段升序排列,【排序的时候确保,记录包含排序字段age,否则排序结果不能令人满意】
>db.user.find({}).skip(10).limit(2) //跳过前面10条记录,从第11条记录开始,连续取两条记录【分页的常用方法】
7、update更新数据操作:$set,$inc,$unset,$push,$pullAll
>db.user.update({name:'lis'},{$set:{age:38}}) //将name=lis的文档更新,并且set age=38
>db.user.update({age:{$gt:35}},{$set:{age:20}}) //将所有age>35的文档更新,并且set age =20
>db.update({name:'lisi'},{$inc:10}) //将name=lis的文档更新,让age自增10;
>db.update({name:'lisi'},{$inc:-10}) //将name=lis的文档更新,让age自减10;
>db.user.update({name:'lisi'},{$unset:{field:1}}) //将name=lis的文档更新,删除该文档中的field字段
>db.user.update({name:'lisi'},{$push:{sex:'male'}}) //将name=lis的文档更新,追加字段sex,sex值为数组["male"]形式
>db.user.update({name:'lisi',{$pullAll:{sex:["male","female","middle"]}}}) //将name=lis的文档更新,删除值为数组的字段中指定的值
注意:$unset,和$pullAll,前者删除整个字段和字段里面的内容,后者删除字段里面的指定值
8、remove删除文档记录
>db.user.remove({}) //删除所有记录
>db.user.remove({name:'lisi'}) //删除name=lisi的记录
9、drop 删除集合
>db.user.drop() //删除整个user集合
10、dropDatabase删除数据库
>use mydb //选择要删除的数据库
>db.dropDatabase() //删除整个数据库