MongoDB 快速入门
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”后就可以确定服务开启成功(在浏览器中打开下面两个网址,第一次用看两眼,有点存在感。注意的是使用过程不要关闭该窗口)
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 快速入门的更多相关文章
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- MongoDb 快速入门教程
文章首发于[博客园-陈树义],点击跳转到原文MongoDb 快速入门教程. MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的 ...
- MongoDB快速入门指南与docker-compose快体验
MongoDB快速入门指南与docker-compose快体验 MongoDB相对于RDBMS的优势 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档.一个文档之间的字段数,内容和 ...
- [你必须知道的NOSQL系列]专题一:MongoDB快速入门
一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...
- MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门
[引言] 毕竟现在MongoDB还是出于成长阶段,所以现在网上相关的资料很少,而且大部分还都是针对于MongoDB的老版本的.再加上MongoDB的频繁升级.重大更新等等,导致菜鸟学习的难度增大. 好 ...
- MongoDB快速入门教程 (3.2)
3.2.索引 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...
- 前端开发必学技能之一———非关系数据库又像关系数据库的MongoDB快速入门第一步下载与安装
数据库总的来说,分为两个方向:关系数据库和非关系数据库.我们常见的MySQL.Oracle.SQLSerever以及IBMDB2都是属于关系数据库,这里的关系值得是二维表的结构,但是由于随着web的应 ...
- MongoDB 快速入门--高级
引用 --------->DBRefs DBRef的形式: { $ref : , $id : , $db : } $ref:集合名称 $id:引用的id $db:数据库名称,可选参数 { &qu ...
- MongoDB 快速入门--中级
索引 ensureIndex 用来创建索引,需要注意的就是一个集合最多也就64个索引 如果没加所有就是表扫表,速度很慢, 当然如果索引的键有多个,就必须考虑顺序 拓展索引 同样的也可以为内嵌文档 建立 ...
- MongoDB 快速入门--初级
数据库的操作一般来说都是CRUD,这其中最难的就是查询,所有所我们先来了解MongoDB中的 插入(insert) 说到插入,我们就必须得说说如何创建数据库,如何创建集合,然后才是如何创建文档. 在这 ...
随机推荐
- HDU 5889 Barricade(最短路+最小割水题)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- [TC_SRM_466]DrawingBlackCrosses
[TC_SRM_466]DrawingBlackCrosses 试题描述 \(n \times m\)(\(n, m \le 20\))的棋盘 其中至多有 \(8\) 个格子为黑色,其他格子为白色 每 ...
- git本地仓库关联远程仓库
1. git init 2. git add . 3. git commit -am "###" -------以上3步只是本地提交 4.git remote add o ...
- 亚瑟王(arthur)
亚瑟王(arthur) 题目描述 小K不慎被LL邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...
- caffe+Ubuntu14.04.10 +cuda7.0/7.5+CuDNNv4 安装
特别说明: Caffe 官网地址:http://caffe.berkeleyvision.org/ 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文 ...
- 【05】Vue 之 实例详解与生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- ai相关
学习资源 1.1 1.2 2.1 2.2 2.3 前置 octave sklearn python3 git 学习相关 link 定义 Field of study that gives comput ...
- Crash的数字表格(bzoj 2054)
Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...
- [CODEVS1205]单词反转
给出一个英语句子,希望你把句子里的单词顺序都翻转过来 这个题算是第二次做了……第二次用的C++然而还是写不出来 思路1:用一个数组把读过去的单词存起来,再逆序输出即可 思路2:读入句子后,先在句子开头 ...
- SQL语句效率问题的几点总结
原文发布时间为:2009-10-29 -- 来源于本人的百度文章 [由搬家工具导入] 1. SQL优化的原则是: 将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。 调 ...
