文档:多个键及其关联的值『有序』地放置在一起。
{"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. os.environ()

    ---------2016-5-9 18:56:39-- source:OS.ENVIRON()详解

  2. 15 sql base line 工作机制

    <个人Configuration> 正常配置一下, 就OK了, 不用理了, oracle 11g 默认启动 发展: .从Oracle的发展角度来看,估计这种方法是Oracle发展和改进的方 ...

  3. [Selenium] 数字显示的月份转换为英文显示

    如果只需要英文的前三位字母,可以自己截取.

  4. 函数指针与指针函数以及typedef

    c难于理解的是指针,其魅力之处也是指针,函数方法结构,化繁为简可以理解为:返回值 函数名(形参表),具体来说: 返回值:1.可以为空void 2.基本数据类型char short int long f ...

  5. WEB项目 后台接收前端数组

    //保存区域选择的设备 $scope.saveDevice = function(){ var device = []; $("input[type='checkbox']:checked& ...

  6. Windows Store App 文件选取器

    使用文件选取器可以访问除上面介绍的"应用程序存储"和"用户库"两个位置之外的本地文件或者文件夹.文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应 ...

  7. 非常简单的XML解析(SAX解析、pull解析)

    这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...

  8. iOS开发UI篇—xib的简单使用

    iOS开发UI篇—xib的简单使用 一.简单介绍 xib和storyboard的比较,一个轻量级一个重量级. 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: ...

  9. SAP Adapter启动报错

    在启动Adapter的时候,抛出GateWay Service Exception 当时用的gateway service是“sapgw00” 解决方法:这是由于当sap系统向本机注册服务的时候出错, ...

  10. git学习(这个我没有整理,是我不断在学习的过程中,自己总结的,对象是我,不过有问题的,我们可以相互交流)

    每次git提交,都会有一个parent指针,指向上一次的commit ,   如果合并,master就和hotfix河道一起,就直接删除hotfix就OK     此时,虽然操作一样,大底层实现不一样 ...