1. MongoDB的特点:

  (1) 易于使用

    MongoDB是一个面向文档的数据库,非关系型数据库。通过在文档中嵌入式文档和数据,面向对象的方法能够仅使用一条记录来表现复杂的层次关系。文档的键和值不再是固定的类型和大小。

  (2) 易于扩展

    MongoDB的设计采用横向扩展,即通过分区将数据分散到更多机器上。面向文档的数据模型使它很容易地在多台服务器之间进行数据分割。MongoDB能够自动处理集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上。

  (3) 丰富的功能

    1) 索引

    MongoDB支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引及全文索引。

    2) 聚合

    MongoDB支持聚合管道,用户能够通过简单的片段创建复杂的聚合,并通过数据库自动优化。

    3) 特殊的集合类型

    MongoDB支持存在时间有限的集合,适用于将在某个时刻过期的数据,如会话(session),也支持固定大小的集合,用于保存近期数据,如日志。

    4) 文件存储

    MongoDB支持非常易用的协议,用于存储大文件和文件元数据。

2. MongoDB基础知识

  (1) 文档

    文档是MongoDB的核心概念,文档就是键值对的一个有序集。文档的键不能含有\0(空字符),且"."和"$"符只能在特定环境下使用,二者是保留的。MongoDB不但区分类型,而且区分大小写,不能包含重复的键,且文档中的键/值对是有序的:{"x":1,"y":2}与{"y":2,"x":1}是不同的。

  (2) 集合

    集合就是一组文档。文档可看做关系型数据库的一行,集合就相当于一张表。

    1) 动态模式

    集合是动态模式的,即{"greeting":"Hello, world!"} {"foo":3}可以存在于同一个集合中.

    2) 命名

    集合中不能是空字符串("");集合中不能包含\0字符(空字符);集合不能以"syste,."开头,其为系统集合保留的前缀(如system.users保存数据库的用户信息,而system.namespaces集合保存着所有数据库集合的信息);用户创建的集合不能在集合名中包含保留字符"$"。

    子集合是使用"."分隔不同命名空间的子集合,使用子集合来组织数据非常高效。

  (3) 数据库

    1) 数据库名需满足:不能是空字符串("");基本上,只能使用ASCII中的字母和数字;数据库名区分大小写;数据库名最多为64字节

    2) 保留的数据库名:

    admin:root数据库,拥有所有数据库的权限,一些特定的服务器端命令也只能从admin数据库运行(列出所有数据库或关闭服务器)

    local:永远不可复制,且一台服务器上的所有本地集合都可以存储在这个数据库中。

    config:用于分片设置。

  (4) 启动MongoDB

  运行mongod命令,启动数据库服务器。注意:mongod在没有参数时会使用默认数据目录/data/db,因此,在启动之前,先创建数据目录/data/db,确保对该目录有写权限。

  启动时,服务器会打印版本和系统信息,默认监听27017端口。mongod还会启动一个基本的HTTP服务器,监听数字为28017,通过http://localhost:28017可以获取数据库的管理信息。

3. windows安装MongoDB,可参考:windows下安装MongoDB及使用整理

4. Shell基本操作

  MongoDB自带shell,shell是一个功能完备的JavaScript解释器,可运行任意JavaScript程序。

#简单数学运算
> x= > x/ # 利用JS标准库
> Math.sin(Math.PI/) > new Date("2016/01/20")
ISODate("2016-01-19T16:00:00Z")
> "Hello,World".replace("World","MongoDB")
Hello,MongoDB #定义调用JS函数
> function factorial (n){
... if(n<=) return ;
... return n*factorial(n-);
... }
> factorial() >

  注意:在某行连续三次按下回车键可取消未输入完成的命令。

  (1) 启动时,shell(MongoDB客户端)会连接到MongoDB服务器的test数据库,并将数据库连接赋值给全局变量db(该变量是通过shell访问MongoDB的主要入口点)。

#查看db当前指向那个数据库
> db
test
> #选择数据库
> use foobar
switched to db foobar
> db
foobar
>

  通过db变量,可访问其中的集合,如db.baz可返回当前数据库的baz集合。

  (2) 创建

  insert函数可将一个文档添加到集合中。例:创建一个post局部变量来存储博客文章,用于表示我们的文档,其键为"title","content","date"。

# 定义局部变量post
> post={"title":"My Blog Post",
... "content":"Here's my blog post.",
... "date":new Date()}
{
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2016-01-20T13:29:51.882Z")
} # 调用insert将其保存到blog集合中
> db.blog.insert(post)
WriteResult({ "nInserted" : }) #查看保存的数据
> db.blog.find()
{ "_id" : ObjectId("569f8c0c0124e675dc0e4f0f"), "title" : "My Blog Post", "conte
nt" : "Here's my blog post.", "date" : ISODate("2016-01-20T13:29:51.882Z") }
>

  (3) 读取

  find和findOne方法可用于查询集合里的文档,若只想查看一个文档,可用于findOne。二者可接受一个查询文档作为限定条件,使用find时,shell最多显示20个匹配的文档。

> db.blog.findOne()
{
"_id" : ObjectId("569f8c0c0124e675dc0e4f0f"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : ISODate("2016-01-20T13:29:51.882Z")
}
>

  (4) 更新

  update函数用于更新,至少接受两个参数:限定条件(用于匹配需更新的文档)和新的文档。例:为先前写的文章增加评论功能,需要增加一个新的键。

# 修改变量post,增加"comments"键
> post.comments=[]
[ ] # 执行更新,用新的post替换标题为"My Blog Post"的文章
> db.blog.update({"title":"My Blog Post"},post)
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : }) # 查看更新结果
> db.blog.findOne()
{
"_id" : ObjectId("569f8c0c0124e675dc0e4f0f"),
"title" : "My Blog Post",
"Content" : "Here's my blog post.",
"date" : ISODate("2016-01-20T13:34:19.849Z"),
"comments" : [ ]
}
>

  (5) 删除

  使用remove方法可将问答很从数据库永久删除。若未使用任何参数,会将集合内的所有文档全部删除。可接受一个作为限定条件的文档作为参数。

> db.blog.remove({"title":"My Blog Post"})
WriteResult({ "nRemoved" : })
>

windows下mongodb安装与使用整理

MongoDB学习笔记(1):MongoDB简介的更多相关文章

  1. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  2. MongoDB学习笔记(一) MongoDB介绍及安装(摘)

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...

  3. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  4. MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用

    1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...

  5. MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...

  6. MongoDB学习笔记1(简介)

    一.简介                 1.丰富的数据类型         MongoDB是一种非关系型数据库,是面向文档的数据库.         MongoDB没有模式,文档的键不会事先定义,也 ...

  7. MongoDB学习笔记(一) MongoDB介绍及安装

    转自:http://database.51cto.com/art/201103/247882.htm http://baike.baidu.com/link?url=b6B3dVSCnQauCX-Ep ...

  8. MongoDB学习笔记-认识MongoDB

    学习参考地址 http://www.runoob.com/mongodb NoSql 流行的数据库Oracle,SqlServer,MySql为关系性数据库,相对的,也有非关系性数据库,统称为NoSq ...

  9. Mongodb学习笔记三(Mongodb索引操作及性能测试)

    第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...

  10. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

随机推荐

  1. Spring JdbcTemplate 方法详解

    JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修 ...

  2. WPF面试准备

    1.wpf中有两类模板,控件模板controltemplate和datatemplate都派生自Frameworktemplate. 总共有三大模板 ControlTemplate,ItemsPane ...

  3. CFBundleVersion与CFBundleShortVersionString,上架注意事项

    CFBundleVersion,标识(发布或未发布)的内部版本号.这是一个单调增加的字符串,包括一个或多个时期分隔的整数. CFBundleShortVersionString  标识应用程序的发布版 ...

  4. jquery实现简单瀑布流布局(续):图片懒加载

    # jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...

  5. ecshop 多表删除

    $sql = 'DELETE O, G FROM ' . $GLOBALS['ecs']->table('delivery_order') . ' AS O, ' . $GLOBALS['ecs ...

  6. SQLPROMPT5.3对各种加密对象的解密测试

    SQLPROMPT5.3对各种加密对象的解密测试 测试环境: SQL2005个人开发者版 SP4 SQLPROMPT版本:5.3.8.2 视图 CREATE VIEW aa WITH ENCRYPTI ...

  7. SqlServer 产生随机数

    ALTER PROCEDURE [dbo].[usp_RandomNumber] ( , --随机数位数 --随机笔数 ) AS BEGIN DECLARE @T AS TABLE([Random N ...

  8. filterHTML

    function filterHTML(source) { return !source ? "" : source.replace(/]*>/g, "" ...

  9. Test Regular Expressions Online with RegExr免费的正则表达式检验网站

    免费的正则表达式检验网站: http://www.regexr.com

  10. PHP中类的继承和构造函数的继承

    PHP4.x 版本: PHP 4.x 的构造函数名与类名相同. 子类的构造函数名与子类名相同(废话). 在子类里父类的构造函数不会自动执行. 要在子类里执行父类的构造函数,必须执行类似以下语句: $t ...