关闭

MongoDB学习笔记(一)

标签: mongodb存储文档数据库
902人阅读 评论(0) 收藏 举报
分类:

学习笔记:

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}} 完成字段的重命名

 

0
0

猜你在找
C语言及程序设计(讲师:贺利坚)
Python爬虫工程师培养课程全套(讲师:韦玮)
Python全栈开发入门与实战课(讲师:李杰)
2017软考网络规划设计师视频套餐(讲师:任铄)
2017软考软件设计师视频套餐(讲师:任铄)
2017软考-信息系统项目管理师视频套餐(讲师:任铄)
软考(高级)项目经理实战营(讲师:张传波)
微信公众平台开发套餐(讲师:刘运强)
深度学习原理+实战+算法+主流框架套餐(讲师:唐宇迪)
2017系统集成项目管理工程师通关套餐(讲师:徐朋)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:48611次
    • 积分:1191
    • 等级:
    • 排名:千里之外
    • 原创:56篇
    • 转载:0篇
    • 译文:4篇
    • 评论:102条
    QQ联系方式
    作者日本硕士
    知识长期输入中
    技术长期磨练中
    如有问题或交流
    请QQ联系 649508982
    来者请说明CSDN
    或者加入机器学习交流群
    不定期发送pdf等学习资源
    QQ群号:657119450
    机器学习 QQ群加入
    博客专栏
    最新评论