Mongo数据库

关系型数据库

MySQL:不支持分布式,查询麻烦,支持 tablejoin。database 数据库【table 表【row】记录行【column】字段 【index】索引】

非关系型数据库

mongDB:支持分布式,开源,操作大量数据,不支持 tablejoin,自动创建 _id(object 对象)为主键。datebase 数据库【collection】集合【document】文档【field】域【index】索引】,BSON 数据结构

 

MongoDB 数据库命令:

在 MongoDB 的 bin 目录下

mongod .exe --dbpath MongoDB 的 data 文件目录

配置环境变量 path 将 MongoDB 下的 bin 目录写好

测试:cmd 下 --》mongo 出现版本号说明配置成功。

 

如何快速启动 MongoDB 服务:

在硬盘上新建一个文件夹 mongo,在文件夹中新建一个批处理文件。打开此文件,写下:mongod .exe --dbpath MongoDB 的 data 文件目录保存 即可 使用时双击。

连接 mongoDB:

mongo

查看帮助信息 :mongod -help

mongod -help

创建 MongoDB 客户端:启动顺序在服务器启动之后。

参考 MongoDB 的服务器端步骤,区别文件名不同和内容为:mongo.exe 127.0.0.1:27017/admin

在客户端查看 help 命令:help 即可。

 

增删改及基础命令:

use 【databaseName】

使用、创建数据库

show dbs 查看数据库

## 创建数据库之后要存数据才能查看到。

给指定数据库添加集合和记录

1.db. 集合名.insert{json}

2. 创建 bson 对象后,db. 集合名.insert(对象名)

查看当前集合:show collections

查看当前集合中的数据:db. 集合名.find();

插入数据:db. 集合名.insert({_id:1,"name":"dog"})

查询集合名第一条数据:db. 集合名.findOne();

save 插入:

_id 存在的情况,则修改,而 insert 则报错。

更新文档:

db. 集合名.update({更新条件},{更新内容})

更新条件也叫查询器;更新内容也叫更新器。

例子:db.persons.update({db.persons.findOne()},{"name":"zhangsan"})

更新操作 $set{}:

更新器前加上 $set{} ,修改为更新内容

更新内容的 key 存在则为修改 ;不存在则增加 key:value

若不带 $set{}, 更新内容 key 不存在则覆盖。

删除文档中的数据:

db. 集合名.remove({"name":"zhangsan"})// 删除张三的记录

MongoDB 不支持批量插入,用 for 循环可以,底层基于 js。

for(var i=1;i<=10;i++){

db.persons.insert({"name":i});

} 回车就插入成功。

删除数据:

所有:db. 集合名.remove();

单个:db. 集合名.remove({查询器});

查询:

db. 集合名.find({查询条件},{field:[0、1]})##0 为不显示;1 为显示

例如:db.persons.find({age:{$gte:30,$lte45}},{_id:0,name:1}) // 查询年龄在 30 到 45 之间的人的姓名。

db.persons.find({country:{$in:["USA","china"]}},{name:1,age:1,country:1,job:0})// 查询国籍是美国和中国的姓名、年龄、和国籍。

带条件的 where 查询:

db.persons.find({"age":23})// 查询年龄为 23 的人的信息

多表查询:

var classes ={id:1,name:"java",students:[{sid:1,name:"zhangsan",age:18},{sid:2,name:"lisi",age:20}]}

db.classes.insert(classes)

 

查询班级编码为 1 的第一位学生

1.db.classes.find({"_id":1}).forEach(function (e){printjson(e.students[0].sid)})

2.db.classes.findOne().students