关闭

MongoDB学习笔记(一)

标签: mongodb存储文档数据库
1364人阅读 评论(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
查看评论

Ionic3学习笔记(一)

(一)ionic3环境准备:    1.安装Node.js(安装之后执行node -version检查是否安装成功)     2.安装npm。  命令:npm install npm -g      3.安装 io...
  • Dan_2017
  • Dan_2017
  • 2017-11-28 21:46
  • 144

MongoDB学习笔记(一)初识MongoDB

1.关系型数据库与非关系型数据库的对比 1.1 非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录可以有不一样的键, 每条记录可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。  MongoDB与mysql/...
  • qq_36040184
  • qq_36040184
  • 2017-01-11 21:28
  • 103

MongoDB学习笔记(一) MongoDB介绍

一、前言   最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下。本人不才,借着自学的机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论。部分资源出自其他博客,旨将零散知识点集中到一起,如果有侵犯您的权利,请联系1262812776...
  • Yrz11
  • Yrz11
  • 2017-02-15 11:45
  • 86

C++/GDI+ 学习笔记(一)——安装、配置&使用

使用GDI+很简单。需要做的有一下几个步骤。1.       安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。2.       设置编译器的包含路径,VC6的...
  • eplanet
  • eplanet
  • 2007-10-09 09:11
  • 9163

Robot Framework 学习笔记(一)

序为了更好的适应工作,提前开始准备学习内容,按照个人学习进度进行阶段性总结,Robot Framework属于自动化测试框架,本文基于Windows7系统进行相关软件安装讲解。安装过程第一步: Python下载地址 https://www.python.org/downloads/ 选择2.7版...
  • xinyu913
  • xinyu913
  • 2016-04-11 17:03
  • 631

UNP卷一学习笔记:I/O模型

UNIX下可用的5种I/0模型: (1)阻塞式I/O   (2)非阻塞式I/O   (3)I/O复用   (4)信号驱动I/O(SIGIO)    (5)异步I/O 前4种属于同步操作,第5种属于异步操作。 下...
  • u014557232
  • u014557232
  • 2016-03-19 14:25
  • 316

VC/MFC学习笔记

 windows中的很多数据类型,如HWND,WParam等其实都是我们所熟悉的unsigned int等一些类型,而定义成新的形式是为了方便记忆,不要因为这个而被难住!消息队列:把消息放在队列中,应用程序每次都只取走消息队列中的第一条消息。 HINSTANCE:窗口的实例,一个程序可以有...
  • degree_37
  • degree_37
  • 2009-04-22 16:24
  • 303

sql server 的T-SQL 学习笔记(八)

/******************* 函数 和 存储过程 ************************/ -- 表值函数和标量值函数 -- 系统存储过程-- 函数 -- 函数是一种用户封装有一条或者多条SQL语句的结构 -- 函数分为系统函数和用户自定义函数 -- 用户自定义函数...
  • chencong3139
  • chencong3139
  • 2017-07-25 14:40
  • 236

SpringMVC 学习笔记(一) Hello World

Spring MVC 是目前最主流的MVC 框架之一 Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请 求的控制器,而无须实现任何接口。 支持 REST 风格的 URL 请求 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具 扩展性和灵活性
  • a67474506
  • a67474506
  • 2015-06-04 14:26
  • 2019

DevExpress学习笔记(五)-以拖拽的方式构建树(TreeList)

DevExpress学习笔记 以拖拽的方式构建树(TreeList) 本人最近在做某个项目中需要用到动态设置TreeList节点的技术,在这个过程中对于TreeList的各项功能有了初步的尝试,准备分几篇内容将其记录下来。这一篇主要记录TreeList的拖拽功能。 一 ImageL...
  • ltrelax
  • ltrelax
  • 2012-08-13 12:07
  • 1231
    个人资料
    • 访问:135720次
    • 积分:2295
    • 等级:
    • 排名:第19260名
    • 原创:90篇
    • 转载:0篇
    • 译文:4篇
    • 评论:135条
    联系方式
    QQ联系方式
    作者日本硕士
    知识长期输入中
    技术长期磨练中
    如有问题或交流
    请QQ联系 649508982
    来者请说明CSDN
    或者加入机器学习交流群
    不定期发送pdf等学习资源
    QQ群号:657119450
    机器学习 QQ群加入
    博客专栏
    最新评论