文章目录
  1. 1. 什么是MongoDB
  2. 2. MongoDB的安装(windows下)
    1. 2.1. 1.安装包解压
    2. 2.2. 2.新建存数据的文件夹
    3. 2.3. 3.运行mongo
  3. 3. MongoDB简单使用示例
    1. 3.1. 创建新的database
    2. 3.2. 创建新表
    3. 3.3. 查询
    4. 3.4. 更新
    5. 3.5. 插入
    6. 3.6. 唯一索引
    7. 3.7. 删除
    8. 3.8. 在Node.js中使用MongoDB
      1. 3.8.1. 一些问题

什么是MongoDB

MongoDB是介于传统数据库和NoSQL数据库之间的一种非关系型数据库。MongoDB使用c++实现,具有高可靠,高可用等优秀特性。
Mongo的官方网站地址是:http://www.mongodb.org/

MongoDB的安装(windows下)

在官方网站下载了MongoDB了之后,我们就可以进行MongoDB的安装工作了。
(以下截图来自在windows server 2003系统上面安装mongo过程中)

1.安装包解压

将mongo安装包解压放在D:/ 改名为mongodb
mongo的安装

2.新建存数据的文件夹

mongodb下新建文件夹db(随便叫什么都行)用来存mongo的数据
mongo的安装

3.运行mongo

现在你已经可以运行mongo咯~
方法一
mongodb的bin目录下,shift+鼠标右键>在此处打开命令窗口>输入以下命令

1
mongod --dbpath D:\Mongodb\db

这样就可以启动mongo了~

方法二
不过由于作者我是个懒虫,所以为了每次少输入这么个命令,所以就写了个bat文件,O(∩_∩)O哈哈~
在mongodb的bin文件夹下新建一个”快速启动.bat”
mongo的安装
bat文件内容如下
mongo的安装
保存,并双击”快速启动.bat”将看到以下界面,运行成功~
mongo的安装
在浏览器输入: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 这样就创建完成了..
像这样:
robomongo的使用
新建的数据库里啥都没有,首先偶们先来给他添一张表吧,右键数据库>Open Shell 在右边框框里可输入命令

创建新表

现在我们创建一张用户表users(包含字段“用户名”、“密码”、“注册时间”),我们可以这样写

1
2
3
4
5
db.users.save({
username:'admin' ,
password:'admin',
register_time : new Date(),
})

现在我们点击红框框里的执行按钮,运行我们刚刚写的代码
robomongo的使用

查询

执行成功后我们发现左边collections下多出一张users表,此时我们执行代码来查询一下users表中都有神马
以下命令将查询出users中所有数据:

1
db.users.find()

我们看到刚才插入的数据确实已经在这张users表中了
robomongo的使用

更新

我们尝试把刚刚插入的那个用户的密码改成123456

1
2
3
4
db.users.update(
{ "username": "admin" },
{ "$set": { "password": "123456" } }
)

之后查询一下
robomongo的使用
我们发现密码字段已经变成了123456

插入

我们尝试插入一条新数据

1
2
3
4
5
db.users.insert({
username:'test' ,
password:'test',
register_time : new Date()
})

第一次执行成功,我们不小心执行了两次!
查询一下,也许我们只希望出现一个叫做test的用户,可是现在数据库中有两个了!
robomongo的使用

我们想保证文档的”username”键都有不一样的值,创建唯一索引可以确保集合的每一个文档的指定值都有唯一值。

唯一索引

我们先把重复创建的名叫test的用户删除(只保留了一个test用户),再来执行下面代码创建唯一索引:

1
db.users.ensureIndex({"username":1},{"unique":true})

创建成功后,我们再执行上面插入名叫test的用户(此时已经有一个叫test的用户在数据库中)
robomongo的使用
我们发现报错了!test用户插入不进去,因为唯一索引起了作用,用find查询,也并没有改变,我们的唯一索引创建成功~

删除

我们再尝试将admin这个user删除掉(注意:这里是筛选条件的删除)

1
db.users.remove({'username':'admin'})

之后查询下
robomongo的使用
我们发现现在admin这个用户已经被删除,只剩下了test用户…

注意:remove操作较危险,要小心给其传递条件,如果不加条件,像这样:

1
db.users.remove()

运行该命令后会移除users数据库中所有的数据,需谨慎使用!

目前为止,是基础中的基础,很简单对不对?不过实际应用中会比上述例子要复杂得多。

在Node.js中使用MongoDB

使用mongoose类库,可以让JSON数据直接入库MongoDB。这里并不做过多介绍,有兴趣,或需要用到的朋友可以去了解下。
mongoose官网:http://mongoosejs.com/

一些问题

以下记录一点,我遇到的问题,其实并不难,但是如果要去找就很花时间。

有一张表,表结构如下(此为缩略版本的mongoose的表结构):

1
2
3
4
5
6
7
8
9
10
11
12
var VersionSchema = new Schema({
username:{ type:String, index: true } ,
historyVersion:
[
{
version:String,
time : { type: Date, default: Date.now },
describe:String
}
]
});
var Version = mongodb.mongoose.model("Version", VersionSchema);

historyVersion是一个数组,数组里面存放的是对象类型。

  • 关于覆盖一个表中类型为数组中的某个对象的某个字段 = =
    我要改historyVersion这个数组的某个对象的某个字段的值。
    做法如下:
1
2
3
4
db.versions.update(
{ "username": "admin",'historyVersion._id':ObjectId("539db613ec7788dc2414cacf") },
{ "$set": { "historyVersion.$.version": "2" } }
)

historyVersion中对象中的_id是自动生成的,通过这个来辨别更新哪个对象里的字段

  • 关于删除一个表中类型为数组中的某个对象
1
2
3
4
db.versions.update(
{'username':'test'},
{$pull:{'historyVersion':{'_id':ObjectId("539dcd6b29fb842026d1a5f3")}}}
)
文章目录
  1. 1. 什么是MongoDB
  2. 2. MongoDB的安装(windows下)
    1. 2.1. 1.安装包解压
    2. 2.2. 2.新建存数据的文件夹
    3. 2.3. 3.运行mongo
  3. 3. MongoDB简单使用示例
    1. 3.1. 创建新的database
    2. 3.2. 创建新表
    3. 3.3. 查询
    4. 3.4. 更新
    5. 3.5. 插入
    6. 3.6. 唯一索引
    7. 3.7. 删除
    8. 3.8. 在Node.js中使用MongoDB
      1. 3.8.1. 一些问题