文档:多个键及其关联的值『有序』地放置在一起。
{"greeting" : "Hello, world!", "foo" : 3}
集合:一组文档。集合是无模式的,下面两个文档可以存在于同一个集合里面:
{"greeting" : "Hello, world!"}
{"foo" : 5}
集合的命名规则:
(1)集合名不能使空字符串""。
(2)集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
(3)集合名不能以"system."开头,这是为系统集合保留的前缀。例如system.users这个保存着数据库的用户信息,system.namespaces集合保存着所有数据库集合的信息。
(4)用户创建的集合名字不能含有保留字符$。
子集合按“.”字符划分。例如,一个带有博客功能的应用肯呢个包含两个集合,分别是blog.posts和blog.authors。这样做的目的是为了使组织结构更好些,虽然blog这个集合和他的子集合没有任何关系。
数据库:多个集合。
MongoDB中多个文档组成集合,多个集合组成数据库。
数据库的命名规则:数据库名可以是满足以下条件的任意UTF-8字符串。
(1)不能是空字符串("")。
(2)不得含有' '(空格)、.、$、/、\和\0(空字符)。
(3)应全部小写。
(4)最多64字节。
因为 数据库名最终会编程文件系统里的文件。
保留的特殊数据库名:
admin:从权限的角度看,这是“root”数据库。如果将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的集合。
config:当Mongo用于分片设置时,config数据库在内部使用,用于包UC你分片的相关信息。
命名空间 = 数据库名.集合名
例如,如果你在cms数据库中使用blog.posts集合,那么这个集合的命名空间就是cms.blog.posts。
启动MongoDB:
Linux: $ ./mongod
Windows:$ mongod.exe
mongod默认数据目录/data/db(windows下C:\data\db\),默认端口27017。创建数据目录(比如mkdir -p /data/db),并确保对该目录有些权限是很重要的。
mongod还会在端口28017启动一个非常基本的HTTP服务器,可以通过浏览器访问http://localhost:28017来获取数据库的管理信息。
MongoDB shell:MongoDB自带一个JavaScript shell,可以从命令行与mongoDB实例交互。
运行mongo启动shell:
$ ./mongo
shell会在启动时自动连接MongoDB服务器,所以要确保在使用shell之前启动mongod。
shell是功能完备的JavaScript解释器,可以运行任何JavaScripe程序。
shell是一个独立的MongoDB客户端。开启的时候,shell会连到MongoDB服务器的test数据库,并将这个数据库连接赋值给全局变量db。这个变量是通过shell访问MongoDB的主要入口点。
shell还有些非JavaScript语法的扩展,是为了方便习惯于SQL shell的用户而添加的。例如,最重要的操作就是选择要使用的数据库:
> use foobar
switched to db foobar
现在如果看看db,会发现其指向foobar数据库:
> dbfoobar
可以通过db变量访问其中的集合。例如db.baz返回当前数据库的baz集合。

『shell中的基本操作』:创建、读取、更新和删除(CRUD)。
1.创建
例:假设要存储一篇博客文章。首先,创建一个局部变量post,内容是代表文档的JavaScript对象。里面会有"title","content"和"date"(发表日期)几个键。
> post = {"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : new Date()}
这个对象是个有效的MongoDB文档,所以可以用insert方法将其保存到blog集合中:
> db.blog.insert(post)
可以调用find方法来查看:
> db.blog.find()
2.读取
find会返回集合里面所有的文档。若只是想查看一个文档,可以用findOne:
> db.blog.findOne()
3.更新
例:第一步修改变量post,增减"comments"键:
> post.comments = []
然后执行update操作,用新版本的文档替换标题为"My Blog Post"的文章:
> db.blog.update({title : "My Blog Post"}, post)
文档此时已经有了"comments"键,可以再用find查看一下:
> db.blog.find()
4.删除
remove用来从数据库中永久性地删除文档。在不使用参数进行调用的情况下,它会删除一个集合内的所有文档。他也可以接受一个文档以指定限定条件。例如,下面的命令会删除我们刚刚穿件的文章:
> db.blog.remove({title : "My Blog Post"})

使用shell的窍门
> help
使用db.help()可以查看数据库级别的命令的帮助;
使用db.foo.help()可以查看集合的相关帮助。
在输入函数的时候不要输括号,会显示该函数的JavaScript源代码。如:
> db.foo.update
要查看shell提供的所有自动生成的JavaScript函数API文档,可访问http://api.mongodb.org/js/

MongoDb的数据类型:
· null
null用于表示空值或者不存在的字段。
{"x" : null}
· 布尔
布尔类型有两个值'true'和'false'
{"x" : true}
· 32位整数
shell中这个类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换。
· 64位整数
shell也不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数。
· 64位浮点数
shell中的数字都是这种类型。下面是一个浮点数:
{"x" : 3.14}
这个也是浮点数:
{"x" : 3}
· 字符串
UTF-8字符串都可以表示为字符串类型的数据:
{"x" : "foobar"}
· 符号
shell不支持这种类型。shell将数据库里的符号类型转换成字符串。
· 对象id
对象id是文档的12字节的唯一ID。
{"x" : ObjectId()}
· 日期
日期类型存储的是从标准纪元开始的毫秒数。不存储时区:
{"x" : new Date()}
· 正则表达式
文档中可以包含正则表达式,采用JavaScript的正则表达式语法:
{"x" : /foobar/i}
· 代码
文档中还可以包含JavaScript代码:
{"x" : function() { /* ... */ }}
· 二进制数据
二进制数据可以由任意字节的串组成。不过shell中无法使用。
· 最大值
BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型。
· 最小值
BSON包括一个特殊类型,表示可能的最小值。shell中没有这个类型。
· 未定义
文档中也可以使用未定义类型(JavaScript中null和undefined是不同的类型)。
{"x" : undefined}
· 数组
值得集合或列表可以表示成数组:
{"x" : ["a", "b", "c"]}
· 内嵌文档
文档可以包含别的文档,也可以作为值嵌入到父文档中:
{"x" : {"foo" : "bar"}}

MongoDB学习笔记一:入门的更多相关文章

  1. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  2. MongoDB 学习笔记之 入门安装和配置

    下载MongoDB: 下载解压即可使用. 为了启动方便和统一管理, 在Mongo根目录下建立/data, /logs, /conf文件夹. 在conf文件夹下建立mongodb.conf 文件,基本配 ...

  3. Mongodb学习笔记(1)--入门

    文档 多个键及关联的值有序的放置在一起就是文档,如"greeting":"Hello World!" 特点 文档中键值对是有序的 除了字符串还可以是其他类型:& ...

  4. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  5. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  6. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  7. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  8. WebSocket学习笔记——无痛入门

    WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报  分类: 物联网学习笔记(37)  版权声明:本文为博主原 ...

  9. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  10. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

随机推荐

  1. 浅谈HTTP协议(上)

    今天讨论一下HTTP协议.一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了. 首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和 ...

  2. StringBuffer delete

    描述 java.lang.StringBuffer.delete() 方法将删除这个序列的一个子字符串中的字符. 子字符串的开始在指定的start和延伸处的字符索引end - 1或结束的序列,如果不存 ...

  3. angular中的代码执行顺序和$scope.$digest();

    angular中,在一个controller里$scope.whatever=function(){...} ,这样写只是在这个scope作用域里定义了一个函数,如果要执行的话还得在这个control ...

  4. iOS开发技巧

    一.寻找最近公共View 我们将一个路径中的所有点先放进 NSSet 中.因为 NSSet 的内部实现是一个 hash 表,所以查找元素的时间复杂度变成了 O(1),我们一共有 N 个节点,所以总时间 ...

  5. Maven引入本地jar包

    <dependency> <groupId>${gorup}</groupId> <artifactId>${artifact}</artifac ...

  6. JavaWeb chapter9 JSP基础

    1.  Servlet的缺陷 一个动态网页中,大部分内容都是HTML代码等固定不变的内容,编写和修改HTML非常不方便,令人厌恶: 部署Servlet是繁琐而且容易出错的任务:(Servlet3.0规 ...

  7. Codeforces 451E Devu and Flowers(组合计数)

    题目地址 在WFU(不是大学简称)第二次比赛中做到了这道题.高中阶段参加过数竞的同学手算这样的题简直不能更轻松,只是套一个容斥原理公式就可以.而其实这个过程放到编程语言中来实现也没有那么的复杂,不过为 ...

  8. windows 7 32bit安装 python3.5.0 安装错误 0x80240017 -未指定错误

    日志显示如下: [0F60:03D4][2015-10-20T10:47:52]i001: Burn v3.10.0.1823, Windows v6.1 (Build 7600: Service P ...

  9. MFC学习笔记(一)向模态对话框传递数据

    声明构造函数为2个参数,具有默认参数的参数须放在后面. CDialogDimmer::CDialogDimmer(CString name,CWnd* pParent /*=NULL*/) : CDi ...

  10. python3使用requests登录人人影视网站

    python3使用requests登录人人影视网站 继续练习使用requests登录网站,人人影视有一项功能是签到功能,需要每天登录签到才能升级. 下面的代码python代码实现了使用requests ...