MongoDB学习笔记01
MongoDB的设计理念:能从服务器端转移到驱动程序来做的事,就尽量转移。
文档是MongoDB的核心概念。多个键及其关联的值有序的放置在一起便是文档。每种编程语言表示文档的方法不太一样。
文档的键是字符串。除了少数例外情况。键可以使用任意UTF-8字符。键不能含有\0(空字符),这个字符用来表示键的结尾;.与$有特别的意义,只有在特定环境下才能使用;以下划线“_”开头的键是保留的,虽然这个并不是严格要求的。
MongoDB区分类型与大小写。{“foo”:"3"}与{"foo":3} {"foo":3}与{"Foo":3},它们是不同的。
MongoDB不能有重复的键。
集合就是一组文档。如果说MongoDB中的文档类似于关系数据库中的行,那么集合就如同表,多个集合可以组成数据库。集合是无模式的,这意味着一个集合里面的文档可以是各种各样的。我们可以通过名字来标识集合,集合名可以是任意UFT-8字符串,只要满足一下条件:
1. 集合名不能是空字符串
2. 集合名不能含有\0字符,这个字符表示集合名的结尾
3. 集合名不能以"system."开头,这是为系统集合保留的前缀。
4. 用户创建的集合名字不能含有保留字符$。有些驱动程序的确支持在集合名里面包含$,这是因为某些系统生成的 集合中包含该字符。除非你要访问这种创建的集合,否则千万不要在名字里出现$
多个集合可以组成数据库,和集合一样数据库也通过名字来标识,数据库的名可以是满足一下条件的任意UFT-8字符串:
1. 不能是空字符串
2. 不能含有''(空格)、.、$、/、\和\0(空字符)
3. 应全部小写
5. 最多64字节
数据库名最终会变成文件系统里的文件,这也是如此多限制的原因。把数据库的名字放到集合前面,得到就是集合的完全限定名,称为命名空间。命名空间的长度不得超过121字节,在实际使用当中应小于100字节。
MongoDB默认使用27017端口.
启动MongoDB并指定数据保存的位置 bin\mongod.exe --dbpath 数据存储的路径,默认保存在(c:\data\db)
插入数据
读取数据
find会返回集合里面所有的文档,若只想查看一个文档,可以使用findOne。find与findOne可以接受查询文档形式的限定条件。使用find时,shell自动显示最多20个匹配的文档,但可以获取更多文档。
更新数据 删除数据
mongo是MongoDB的shell客户端,是一个内置的JavaScript解释器,它还有一些非JavaScript语法的扩展。
有个了解函数功能的技巧,就是在输入的时候不要输入括号,这样会显示该函数的JavaScript源代码,如想看find的机理或参数:
JavaScript只有在db中找不到指定的属性时,才会将其作为集合返回,当属性与目标集合同名时,可以使用getCollection函数,要查看名称中含有无效JavaScript字符的集合,这个函数也可以派上用场。
ObjectId使用12字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。这个长长的ObjectId是实际存储数据的两倍长。ObjectId的构成如下:
时间戳精确到秒级别
修改器:$set 如果指定的键不存在则创建它
$unset 删除指定的键
$inc 增加已有键的值,或键不存在时创建一个键,只能作用于整数、长整数或双精度浮点数
$ne与$addToSet 数组中有重复的数据时不会添加
$push 如果指定的键已经存在,会向已有的数组末尾加入一个元素,要是没有就会创建一个新的数组
$each
$pull 会将所有匹配的部分删掉
$pop 从数组任何一端删除元素 {$pop:{key:1}}从数组末尾删除 {$pop:{key:-1}}从数组头部删除
数组的定位修改:通过位置(从0开始)或定位操作符("$")【定位符只更新第一个匹配的元素】
upsert是一个特殊的更新,要没有文档符合更新条件,就会以这个条件和更新文档为基础创建一个新文档,如果找到了匹配的文档,则正常更新。效果如图:
save是一个shell函数,可以在文档不存在时插入,存在时更新,他只有一个参数:文档。要是这个文档含有"_id"键,save会调用upsert,否则会调用插入。
想要知道更新了多少个文档,可以运行getLastError命令
findAndModify命令中每个键对应的值如下:
findAndMondify:集合名
query:查询文档,用来检索文档的条件
sort: 排序结果的条件
update:修改文档,对找到的文档执行更新
remove:布尔类型,表示是否删除文档
new:布尔类型,表示返回的是更新前的文档还是更新后的文档,默认是更新前的文档
“update”与“remove”必须有一个也只能有一个,要是匹配不到文档,这个命令会返回一个错误。相比普通的更新来说,findAndMondify速度要慢一些。
MongoDB中的操作时瞬时完成的,这是因为它们都不需要等待数据库的响应,这并不是异步操作,客户端将文档发送给服务器后就立刻干别的了。
MongoDB学习笔记01的更多相关文章
- MongoDB学习笔记-01 简介、安装
MongoDB简介 MongoDB是一种强大.灵活.可拓展的存储方式.是一个面向文档(相当于"行"的概念)的数据库. 可拓展:通过添加服务器而增加存储量. Windows下安装 版 ...
- MongoDB学习笔记01:入门
MongoDB简介 MongoDB是一个开源.高性能.无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- 软件测试之loadrunner学习笔记-01事务
loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB 学习笔记(原创)
MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记(转)
MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...
- 【转】MongoDB学习笔记(查询)
原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...
随机推荐
- MVC学习四
第七节 讲述了增加model中类的属性,由于数据库中已存在表,表中没有存在新加的列,所以可以删除数据库或者在数据库中新增一列,另可以在controller中新增一个数据库初始化的类,并在Globa ...
- SDK文件夹下内容介绍
Platform-Tools: 这是 adb, fastboot 等工具包.把解压出来的 platform-tools 文件夹放在 android sdk 根目录下,并把 adb所在的目录添加到系统 ...
- 网站飘窗js代码
<SCRIPT> var imagepath="/${res}/images/geren.jpg" ; var imagewidth=178 ;//这两行写图片的大小 ...
- c#中serialPort1_DataReceived串口接收事件处理
1.缓冲区不定字节读取(波特率很高也没问题) //Thread.sleep(1000);//处理事件这块可以加上延时确保不定数的数据可以全部收到缓冲后,才去读缓冲内容--单位:毫秒 byte[] da ...
- CSS3 基础知识
CSS3 基础知识1.边框 1.1 圆角 border-radius:5px 0 0 5px; 1.2 阴影 box-shadow:2px 3px 4px 5px rgba(0,0,0 ...
- POJ2239 二分图最大匹配
问题:POJ2239 分析: 本题给出每门课程的上课时间,求最大选课数,可以转化为二分图最大匹配问题求解. 设集合A为课程集,集合B为上课时间集,根据输入建立二分图.最大选课书就是该二分图的最大匹配数 ...
- 列表:一个打了激素的数组 - 零基础入门学习Python010
列表:一个打了激素的数组 让编程改变世界 Change the world by program 列表:一个打了激素的数组 有时候我们需要把一堆东西暂时存储起来,因为他们有某种直接或者间接的联系,我们 ...
- [C入门 - 游戏编程系列] 贪吃蛇篇(四) - 食物实现
由于食物是贪吃蛇游戏中最简单的一部分,而且和其他部分关联性不强,基本上是一个独立的部分,所以我打算先实现它. 我的想法是食物必须在世界中才能被创造出来,也就是说,先有世界再有食物,所以我得先判断世界是 ...
- tp28xx port pin (open-drain )and (push-pull) 和open collector)
具有开漏(OD)输出的器件是指内部输出和地之间有个N沟道的MOSFET(T1),这些器件可以用于电平转换的应用.输出电压由Vcc'决定.Vcc'可以大于输入高电平电压VCC(up-translate) ...
- Powershell---1 介绍和安装
Powershell 介绍和安装 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆 ...