MongoDB

  • Non-relational JSON Document Store
  • 开源
  • 文档数据库Document Database
  • 自动增长(忽略 高性能、高可用性等自我评价)
  • 动态schema
  • 不支持joins

什么是Document Database

数据库中的每个记录都被看作是一个以键值对为数据结构的文档

JSON示例[value可为列表、可嵌套]

{ 'key' : 'value' ,

'key' : [ 'v1', 'v2'] ,

{} }

下载

https://www.mongodb.org/downloads

配置

解压到任意目录,修改环境变量,创建数据存储目录

Linux中部分操作如下

sudo gedit /etc/profile

添加以下内容

#mango
export MANGO_HOME=/home/kevin/mongodb
export PATH=$MANGO_HOME/bin:$PATH
source /etc/profile

创建默认数据目录并更改权限

sudo mkdir -p /data/db
sudo chown kevin /data/db

启动============下面的操作Windows和Linux相似===========

在terminal/cmd中输入mongod

如果设定其他目录,需要添加参数(如db存放目录路径中含空格,需要用双引号将路径括住),如

mongod --dbpath D:\ProgramFiles\CS\mongodb\db

看到出现“waiting for connection”后就可以确定服务开启成功(在浏览器中打开下面两个网址,第一次用看两眼,有点存在感。注意的是使用过程不要关闭该窗口)

http://localhost:27017/

http://localhost:28017/

shell中的CURD操作

打开一个新的cmd,同样切换到bin目录,输入mongo(一个javascript shell),会连接到mongod(database server),并默认使用名为test的数据库

for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )   //产生测试数据
db 显示当前数据库的名称
show dbs 列出所有数据库
use <数据库名称> 如果数据库原本不存在将会创建
show collections 列出db下的所有集合
 j = { name : "mongo" } 创建文档j
 db.testData.insert( j ) 将j插入到testData这个collection中(类似table)
db.testData.find()[.skip(n)][.limit(n)] 列出testData中的记录,默认输出前20条,需要继续输出的话要输入it
db.testData.findOne()[.pretty()] pretty可使文档更好看
db.testData.find( { x : 3 } [.sort({x:-1})]  条件搜索
db.testData.save(j) 与insert的不同之处在于,当已存在相同_id值的文档时,save会更新文档,insert则报错
db.testData.count() 文档计数
db.testData.update({"name":"mongo"},{"name":"manhua"}) 注意update是整个替换的,若多个匹配,只替换第一个,测试发现被update的会被先删除后插入,但_id不变;若要全部更新,要添加{multi: true}
db.testData.remove({"x":3}) 所有匹配的文档都被删除,若参数为{},则全部文档将逐个被删

命令进阶

{ key : { $gt : value } } 类似的还有$gte $lt $lte

 { key : { $exists : boolean } } 类似的: $upsert : true

{ arraykey : { $in : [] v1, v2, v3 } } 类似的:$all

{ $and : [ {key : value } , {key : value }] }   $or $set $unset $inc $addToSet $push $pushAll $pop

 db.RuleOut.find({"_id" : {'$regex':'...AI'} }) 或db.RuleOut.find({"_id" :/...AI/ })正则查询,对于第一种转义用\\第二种用\

访问内嵌key使用’点‘: outerKey.innerKey

更多命令参考官方文档http://docs.mongodb.org/manual/reference/method/

【有个blog写的不错,上链接】http://www.cnblogs.com/huangxincheng/category/355399.html

==============

备份与恢复

mongodump -d [数据库名称] -o [保存路径]

mongorestore -d [数据库名称] --drop [保存路径],其中drop选项是先删除原有数据库里面的数据

mongorestore -d pssp --drop dump/pssp/rule80.bson 恢复单个collection

MongoDB 快速入门的更多相关文章

  1. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  2. MongoDb 快速入门教程

    文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...

  3. MongoDB快速入门指南与docker-compose快体验

    MongoDB快速入门指南与docker-compose快体验 MongoDB相对于RDBMS的优势 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档.一个文档之间的字段数,内容和 ...

  4. [你必须知道的NOSQL系列]专题一:MongoDB快速入门

    一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...

  5. MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门

    [引言] 毕竟现在MongoDB还是出于成长阶段,所以现在网上相关的资料很少,而且大部分还都是针对于MongoDB的老版本的.再加上MongoDB的频繁升级.重大更新等等,导致菜鸟学习的难度增大. 好 ...

  6. MongoDB快速入门教程 (3.2)

    3.2.索引 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...

  7. 前端开发必学技能之一———非关系数据库又像关系数据库的MongoDB快速入门第一步下载与安装

    数据库总的来说,分为两个方向:关系数据库和非关系数据库.我们常见的MySQL.Oracle.SQLSerever以及IBMDB2都是属于关系数据库,这里的关系值得是二维表的结构,但是由于随着web的应 ...

  8. MongoDB 快速入门--高级

    引用 --------->DBRefs DBRef的形式: { $ref : , $id : , $db : } $ref:集合名称 $id:引用的id $db:数据库名称,可选参数 { &qu ...

  9. MongoDB 快速入门--中级

    索引 ensureIndex 用来创建索引,需要注意的就是一个集合最多也就64个索引 如果没加所有就是表扫表,速度很慢, 当然如果索引的键有多个,就必须考虑顺序 拓展索引 同样的也可以为内嵌文档 建立 ...

  10. MongoDB 快速入门--初级

    数据库的操作一般来说都是CRUD,这其中最难的就是查询,所有所我们先来了解MongoDB中的 插入(insert) 说到插入,我们就必须得说说如何创建数据库,如何创建集合,然后才是如何创建文档. 在这 ...

随机推荐

  1. HDU 5889 Barricade(最短路+最小割水题)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  2. [TC_SRM_466]DrawingBlackCrosses

    [TC_SRM_466]DrawingBlackCrosses 试题描述 \(n \times m\)(\(n, m \le 20\))的棋盘 其中至多有 \(8\) 个格子为黑色,其他格子为白色 每 ...

  3. git本地仓库关联远程仓库

    1. git init 2. git add . 3. git commit -am "###"      -------以上3步只是本地提交 4.git remote add o ...

  4. 亚瑟王(arthur)

    亚瑟王(arthur) 题目描述 小K不慎被LL邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...

  5. caffe+Ubuntu14.04.10 +cuda7.0/7.5+CuDNNv4 安装

    特别说明: Caffe 官网地址:http://caffe.berkeleyvision.org/ 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文 ...

  6. 【05】Vue 之 实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  7. ai相关

    学习资源 1.1 1.2 2.1 2.2 2.3 前置 octave sklearn python3 git 学习相关 link 定义 Field of study that gives comput ...

  8. Crash的数字表格(bzoj 2054)

    Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...

  9. [CODEVS1205]单词反转

    给出一个英语句子,希望你把句子里的单词顺序都翻转过来 这个题算是第二次做了……第二次用的C++然而还是写不出来 思路1:用一个数组把读过去的单词存起来,再逆序输出即可 思路2:读入句子后,先在句子开头 ...

  10. SQL语句效率问题的几点总结

    原文发布时间为:2009-10-29 -- 来源于本人的百度文章 [由搬家工具导入] 1. SQL优化的原则是: 将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。   调 ...