MongoDB小结(更新中)

因为即将的工作需要,昨天特地安装并简单学习了MongodDB

安装的版本是 2.6.9
学习方式是阅读*** 官方Docs*** 可以在页面OPTIONS里选择pdf然后下载到本地
系统是win7 64位

关于安装过程就不多提了,官方Docs里有详细说明,实在碰壁网上也有很多教程可以填坑
安装的目录是D:\MongoDB
MongoDB默认的数据库目录是 \data\db,需要自己手动创建这两个文件夹,当然也可以在配置文件中指定其他目录

配置文件

Mongo本身没有配置文件,所以要自己手动添加,我将其创建于D:\MongoDB\mongod.cfg下,mongod.cfg文件中对Mongo的log和数据库路径进行配置,内容如下

logpath=d:\data\log\mongod.log
dbpath=d:\data\db
设置成windows服务

然后将其设置成windows服务,在cmd下键入如下命令(注意其中的空格)

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg"

创建成功会有 [SC] CreateService 成功 的提示信息
若想删除该服务可以键入

sc delete MongoDB
启动MongoDB

然后每次开启在cmd下键入

net start MongoDB

关闭使用

net stop MongoDB

如果嫌麻烦可以考虑将其设置为开机自启,在之前的添加windows服务中添加 start= "auto",即

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\mongod.cfg" start= "auto"

或者手动在
控制面板>管理工具>服务
中找到MongoDB修改启动类型
到此MongoDB的安装配置基本完成
将MongoDB添加到windows服务是为了更好的启动MongoDB,通过配置的命令行你也可以知道:

启动MongoDB服务就是启动d:MongoDB\bin*目录下的mongod.exe*

接下来我们将认识该目录下的另一个重要命令行工具mongo shell,即mongo.exe,我们将使用它进行数据库的简单增删改查(CRUD)来熟悉MongoDB的入门级操作

启动MongoDB服务之后
双击mongo.exe(若将d:MongoDB\bin配置到环境变量中可直接在cmd下键入mongo)
将有类似如下的提示信息:

2015-05-03T13:38:11.507+0800 Hotfix KB2731284 or later update is not installed,
will zero-out data files
MongoDB shell version: 2.6.9
connecting to: test

其中打印了时间、版本以及当前连接数据库名(即:test)等信息
启动mongo shell默认进入 test 数据库
可以键入

db

查看当前所在数据库名,而键入

show dbs

将查看所有数据库名
你会发现并没有test,MongoDB在你往该数据库插入数据前,并没有真正创建该数据库,我们使用

use mydb

切换到一个新的数据mydb,同样使用 show dbs 你看不到该数据库,键入db,将显示新的数据库名mydb
接下来介绍几个概念,他们分别与传统的SQL数据库的这些概念一一对应:

mongo sql
collection(集合) table(表)
document(文档) row(行)
field(字段) column(列)

翻译不准确的话多多见谅
MongoDB是面向 文档 存储的nosql数据库,这里的文档主要指json格式类型,而所有的文档都存储在MongoDB数据库的 集合 中,就像SQL数据库中所有的行都存储在表中,MongoDB的每个数据库可以有很多个 集合,就像每个数据库可以有多张表

接下来我们创建两个文档,在mongo shell中输入

d1 =  {x: 3, y: 4}
d2 = {name: "mongo", age: 18}

然后插入到mydb中的test这个集合中

 db.test.insert(d1)
 db.test.insert(d2)

往集合中插入文档使用

db.集合名.insert(文档)

在这个过程中,如果集合不存在,MongoDB会隐式地自动创建该集合再进行插入,无需显式地去创建该集合,可以键入

show collections

查看当前数据库的全部集合,其中有个自动创建的system.indexes集合存储当前数据库下的所有索引
接下来查看刚才插入数据库的两条记录,键入

db.test.find()

将会打印刚才插入集合test中的两个文档,并且会自动给每个文档增加一个 _id 键值对
查询集合中的文档使用

db.集合名.find()

你还可以给find增加各种限制,来查询指定的文档
我们再往其中增加几个文档,来测试find的限制查询

db.test.insert({name:"bernie",age:23})
db.test.insert({name:"mike",age:22})
db.test.insert({name:"andy",age:30})
db.test.insert({name:"tony",age:25})
db.test.find()

现在集合打印出了6个文档,我们查找 age > 22 的所有文档的 name,键入

db.test.find({age: {$gt: 22}}, {name: 1})

将打印

{ "_id" : ObjectId("5545e1d9f26186a27992619e"), "name" : "bernie" }
{ "_id" : ObjectId("5545e208f26186a2799261a0"), "name" : "andy" }
{ "_id" : ObjectId("5545e22df26186a2799261a1"), "name" : "tony" }

三条文档,并且只有只有name而不显示age
接下来分析 db.test.find({age: {$gt: 22}}, {name: 1})

query criteria(查询规则) projection(投影)
{age: {$gt: 22}} {name: 1}

find的第一个参数是查询规则,即限定查询的条件,容易看出来是代表的是
age > 22,其中 $gt 是条件操作符代表 大于(greater than),以下附条件操作符的一一映射表

符号 含义
$eq =
$ne !=
$gt >
$lt <
$gte >=
$lte <=
$not !
$in in
$nin not in
$or or
$mod %

第二个参数投影{name:1}是对结果集的筛选,其中的 1 可以用 true 替换,而如果使用 0false 将会对结果集的投影进行取反,也就是除了name其他都会筛选出来
键入如下命令进行文档更新

db.test.update({x:3},{x:100,y:100})

然后键入 db.test.find() 查看刚才的 {x: 3, y: 4} 更新为了 {x:100, y:100}
update的第一个参数同样是 查询规则,第二个条件是具体修改内容,如下:

db.集合名.update(查询规则, 修改内容)

键入如下命令删除文档

db.test.remove({age:22})

使用 db.test.find() 发现包含 {age:22} 的文档已经删除,删除规则如下:

db.集合名.remove(查询规则)

增删改查基本完成

未完待续!(过两天填索引和bulk的坑)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容