MongoDB的安装及简单使用示例
更新日期:
什么是MongoDB
MongoDB是介于传统数据库和NoSQL数据库之间的一种非关系型数据库。MongoDB使用c++实现,具有高可靠,高可用等优秀特性。
Mongo的官方网站地址是:http://www.mongodb.org/
MongoDB的安装(windows下)
在官方网站下载了MongoDB了之后,我们就可以进行MongoDB的安装工作了。
(以下截图来自在windows server 2003系统上面安装mongo过程中)
1.安装包解压
将mongo安装包解压放在D:/ 改名为mongodb
2.新建存数据的文件夹
mongodb下新建文件夹db(随便叫什么都行)用来存mongo的数据
3.运行mongo
现在你已经可以运行mongo咯~
方法一
mongodb的bin目录下,shift+鼠标右键>在此处打开命令窗口>输入以下命令
|
|
这样就可以启动mongo了~
方法二
不过由于作者我是个懒虫,所以为了每次少输入这么个命令,所以就写了个bat文件,O(∩_∩)O哈哈~
在mongodb的bin文件夹下新建一个”快速启动.bat”
bat文件内容如下
保存,并双击”快速启动.bat”将看到以下界面,运行成功~
在浏览器输入:http://localhost:27017/
可以看到如下提示:
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number
如此,MongoDB数据库服务已经成功启动了。
MongoDB简单使用示例
这里只做最简单的示范,如果有兴趣详细了解可以去看《MongoDB权威指南》这本书哟~
博主偶数据方面都偏爱使用可视化工具,使用起较方便( 其实是因为懒吧Σ( ̄。 ̄ノ)ノ ),MongoDB我是用的可视化工具是Robomongo…
创建新的database
在你的connection(左上角可新建connection)上右键>单击CreateDatabase>输入数据库名字>create 这样就创建完成了..
像这样:
新建的数据库里啥都没有,首先偶们先来给他添一张表吧,右键数据库>Open Shell 在右边框框里可输入命令
创建新表
现在我们创建一张用户表users(包含字段“用户名”、“密码”、“注册时间”),我们可以这样写
|
|
现在我们点击红框框里的执行按钮,运行我们刚刚写的代码
查询
执行成功后我们发现左边collections下多出一张users表,此时我们执行代码来查询一下users表中都有神马
以下命令将查询出users中所有数据:
|
|
我们看到刚才插入的数据确实已经在这张users表中了
更新
我们尝试把刚刚插入的那个用户的密码改成123456
|
|
之后查询一下
我们发现密码字段已经变成了123456
插入
我们尝试插入一条新数据
|
|
第一次执行成功,我们不小心执行了两次!
查询一下,也许我们只希望出现一个叫做test的用户,可是现在数据库中有两个了!
我们想保证文档的”username”键都有不一样的值,创建唯一索引可以确保集合的每一个文档的指定值都有唯一值。
唯一索引
我们先把重复创建的名叫test的用户删除(只保留了一个test用户),再来执行下面代码创建唯一索引:
|
|
创建成功后,我们再执行上面插入名叫test的用户(此时已经有一个叫test的用户在数据库中)
我们发现报错了!test用户插入不进去,因为唯一索引起了作用,用find查询,也并没有改变,我们的唯一索引创建成功~
删除
我们再尝试将admin这个user删除掉(注意:这里是筛选条件的删除)
|
|
之后查询下
我们发现现在admin这个用户已经被删除,只剩下了test用户…
注意:remove操作较危险,要小心给其传递条件,如果不加条件,像这样:
|
|
运行该命令后会移除users数据库中所有的数据,需谨慎使用!
目前为止,是基础中的基础,很简单对不对?不过实际应用中会比上述例子要复杂得多。
在Node.js中使用MongoDB
使用mongoose类库,可以让JSON数据直接入库MongoDB。这里并不做过多介绍,有兴趣,或需要用到的朋友可以去了解下。
mongoose官网:http://mongoosejs.com/
一些问题
以下记录一点,我遇到的问题,其实并不难,但是如果要去找就很花时间。
有一张表,表结构如下(此为缩略版本的mongoose的表结构):
|
|
historyVersion是一个数组,数组里面存放的是对象类型。
- 关于覆盖一个表中类型为数组中的某个对象的某个字段 = =
我要改historyVersion这个数组的某个对象的某个字段的值。
做法如下:
|
|
historyVersion中对象中的_id是自动生成的,通过这个来辨别更新哪个对象里的字段
- 关于删除一个表中类型为数组中的某个对象
|
|