MongoDB学习笔记(一)

学习笔记:

1.数据逻辑结构:MongoDB的文档相当于关系数据库的行,集合相当于表,数据库相当于MongoDB数据库。

 

2.MongoDB内部,每个数据库都包含一个NS文件和一些数据文件,例如有一个silie的数据库,就有silei.nssilei.0silei.1,等一系列的文件。

 

3.日志系统:系统日志(启动MongoDB的时候指定一个logpath参数即可,mongod -logpath=/data/db/log/serverlog.log -logappend)Journal系统(mongod -journal),oplog主从日志(mongod - oplogSize=1024),慢查询日志(mongod --profile=1 --slowns=5)。

 

4.Ctrl+c可以停止数据库,或者使用db.shutdownServer()

 


 

在退出后,需要在第一个CMD窗口中重新输入mongod --dbpath c:\db才可以再次进入Mongo连接数据库。

 

5.插入记录

 

查询数据

 

注意:1.不要预先创建一个集合,在第一次插入数据的时候会自动创建。

      2.在文档中可以存储任何结构的数据,但是在实际应用中存储的还是相同类型的文     档的集合。

  3.每次插入一个数据的时候都会有一个ID

循环插入数据

 

如果还有没有查看到的信息,只需要输入it 就可以继续查看剩下的数据了。

 

6.MongoDB主要是支持分布式系统,不支持自增主键。

 

7.每一个集合都有一个ID字段,字段默认类型是ObjectId,也可以不是ObjectId,但是在同一个集合中必须唯一。

 

8.普通查询

 

JAVA SHELL查询

 

把游标转换成真实的数组类型

 

条件查询

 

 

9.findOne()语法,MongoDB SHELL为了避免游标带来的开销,提供了一个findOne()函数,这个函数和find()一样,但是它返回的是游标里的第一条数据,或者返回NULL

 

 

10.通过limit限制结果集的数量

 

 

11.修改记录

 

12.删除记录

 

 

13.条件操作符

db.collection.find({“field”:{$gt:value}}); field大于value

db.collection.find({“field”:{$lt:value}}); field小于value

db.collection.find({“field”:{$gte:value}}); field大于等于value

db.collection.find({“field”:{$lte:value}}); field大于等于value

 

14.$all匹配所有

db.user.find({age:{$all:[6,8]}});

满足括号内的所有值才可以。

 

15.$exit判断字段是否存在

db.user.find({age:{$exit:true}});

db.user.find({age:{$exit:false}});

 

16.$mod取模运算

例如取模查询age取模10等于1的数据,db.student.find({age:{$mod:[10,1]}});

 

17.$ne不等于

db.student.find({age:{$ne:20}});

 

18.$in包含

查询在某一范围内的数据db.student.find({age:{$in:[5,7,9]}});

 

19.$nin不包含

db.student.find({age:{$nin:[5,7,9]}});

 

20.$size匹配数组元素的个数

db.student.find({age:{$size:4}});

 

21.count查询记录条数

db.users.find().count();

返回限制之后的的记录数量,要用count(true)或者是count(!0)才可以。

db.things.find().limit(5).count(true);

db.things.count(); //返回的是things表的数据量

 

22.skip限制返回记录的起点

例如,从第三行开始记录五条数据,db.things.find().skip(3).limit(5);

 

23.sort排序

db.things.find().sort({j:1}); //升序

db.things.find().sort({j:-1}); //降序

 

24.distinct去掉重复值

查询去掉重复值的方法,返回的是一个新的列表,类似关系数据库中的视图操作。

db.things.distinct(“j”);

 

25.group分组统计

Db.things.group(

{key:{a:true , b:true},

cond:{active:1},

reduce:function(obj,prev){prev.csum += obj.c; },

initial:{ csum:0 }

});

Key 要分组的列

Cond 分组条件

Reduce 分组的计算方法

Initial 分组的初始值

 

26.存储过程

db.things.save.({_id:”get_count” , value:function(){

return db.c1.count();}});

db.eval(‘get_count()’);

 

27.数据更新

update命令

db.thins.update(criteria  ,objNew  ,  upsert  ,   multi );

Criteria //查询条件,类似关系数据库WHERE的内容

objNew  //更新操作符,类似关系数据库SET后面的内容

upsert   //如果不存在update的记录则是否插入objNew 的内容,true是插入,false   不插入

multi  //默认是false,只更新找到的第一条记录。如果是true,按条件查出来的多条   记录全部更新。

例如:

db.things.insert({count:2,test2:”silei”});

db.things.insert({count:3,test2:”silei”});

db.things.find();

 

db.things.update({“count”:{$gt:1}},{$set:{“test2”:”OK1”}});

db.things.find();

 

db.things.update({“count”:{$gt:1}},{$set:{“test2”:”OK1”}},false,true);

db.things.find();

 

db.things.update({“count”:{$gt:1}},{$set:{“test2”:”OK1”}},true,false);

db.things.find();

 

save命令

db.things.save(obj);

没有就插入,有就更新。

 

28.数据更新操作符

$inc file的这一项的值加上value

{$inc:{file:value}}

$set

{$set:{file:value}}

$unset 删除字段

{$unset:{file1}}

$push 把value的值加到file中去,file必须是数组类型,如果file不存在,则加一个 数组类型进去

{$push:{file:value}}

$pushAll 一次追加多个值

{$pushAll:{file:value_arrary}}

$addToSet 加value到数组内,只有不存在这个值时才增加

{$addToSet:{file:value}}

$pop

{$pop:{file:-1}} 删除第一个值

{$pop:{file:1}} 删除最后一个值

$pull

{$pull:{file:value}} 删除一个等于value的值

$pullAll

{$pullAll:{file:value_arrary}} 删除数组内的多个值

$rename

{$rename:{file:value}} 完成字段的重命名

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值