mongoDB & Nodejs 访问mongoDB (一)

最近的毕设须要用到mongoDB数据库,又把它拿出来再学一学,下盘并非很稳,因此作一些笔记,否则又忘啦.前端

安装 mongoDB & mongoVUE

mongoDB: https://www.mongodb.com/download-center?jmp=nav#enterprisevue

mongoVUE: mongoVUE 是一个mongoDB 数据库的可视化界面 ,官网被墙了. 并且企业版15天后功能受限,因此在网上找了个破解版的.node

好了,点击下载 ...mongodb

mongoDB 我下载的是archive版的, 解压即用.
shell

将bin 目录配置到环境变量中 ,下面是mongoDB 一些经常使用的功能
数据库

mongod 开机
mongo 运行数据库
mongoimport 导入数据库
mongoexport输出数据库
mongorestore 备份数据库
...json

好了,如今开机服务器

mongod --dbpath d:/mongodb/data

--dbpath 表示数据库文档所在的文件夹,也就是说 mongoDB 真的有物理文件对应的数据库.

前端工程师

能够看到,已经启动成功了ui

mongoDB 增删改查

若是要使用这个数据库, 那就从新打开一个终端,而且保持 mongod 进程执行

show dbs    // 查看全部数据库
use local   // 使用数据库
use test    // 当use 一个不存在的数据库, 那么就会新建一个数据库,可是 只有在插入数据后,数据库才会被真正建立成功
db          // 查询当前在哪一个数据库

show collections // 显示全部集合
db.student.insert({"name":"pawn","age":12,"gender":"male"}); // 如今插入一条数据
db.student.find() // 查询集合

咱们多插入几条数据,用来条件查询,因为在mongoDb中数据是没有格式的, 因此下面的第二条语句彻底可行

db.student.insert({"name":"ququ","age":18,"gender":"male"});
db.student.insert({"name":"tom","age":9});

下面作一个查询,也是采用一个对象查询, 这对于JSer 简直太友好了

db.student.find({name:'ququ'});
db.student.find({age:{$gt:12}})

删除当前数据库

db.dropDateabase()

可是,一般,咱们不可能一直insert 数据, 因此通常使用 mongoimport来导入数据库

//student.json
{
    "id": "0001",
    "name": "pawn",
    "age": 18,
    "gender": "男",
    "specialty": "软件工程",
    "job": "前端工程师",
    "contact": ["5555", "aagnoag@126.com"]
} {
    "id": "0002",
    "name": "jk",
    "age": 22,
    "gender": "男",
    "specialty": "软件工程",
    "job": "全栈工程师",
    "contact": ["5555", "aagnoag@126.com"]
} {
    "id": "0002",
    "name": "alice",
    "age": 20,
    "gender": "女",
    "job": "鼓励师",
    "contact": ["5555", "aagnoag@126.com"]
}

经过下面的命令导入到数据库test 的student 集合中,注意,执行这条命令必需要先退出mongo

mongoimport --db test --collection student --drop --file src/student.json

条件查询

在mongoDB中, 一切都是基于对象的, 查询也是,其删除和更改操做也必需要先查询才能够,因此先深刻了解链接查询.
这里举几个例子,条件查询, 并 , 或 ,排序

继续使用上面的数据库,查询年龄大于20岁的男同窗.

db.student.find({"gender":"男","age":{$gt:20}})

两个条件中的逗号就表示并,查找年龄大于 21 岁或者小于 19岁的同窗

db.student.find({$or:[{age:{$gt:21}},{age:{$lt:19}}]});

查找全部的学生, 并按照姓名排序,若是姓名同样,则按照年龄排序,1升序,-1降序

db.student.find().sort({"name":1,"age":1});

修改

修改里面也要条件查询, 必需要告诉mongo, 你要修改谁如今,将pawn 的年龄修改成 20岁

db.student.update({"name":'pawn'},{$set:{"age":20}})

可是,若是查询到多条数据,那么只会修改第一条,因此须要加一个参数 {multi:true}
将全部年龄为20岁的名字改成 dandy

db.student.update({"age":20},{$set:{"name":"dandy"}},{multi:true})

若是不加 $set 呢? 它会覆盖掉原来全部数据

db.student.update({"name":'jk'},{"job":"student"});

删除数据

删除数据就简单了,删除job 为student的学生

db.student.remove({"job":"student"});

可是,若是查询到多条数据,那么删除的时候就会所有删除,若是只删一条, 须要加入参数justOne:true

删除名为dandy 的一我的

db.student.remove({"name":"dandy"},{justOne:true})

删除全部记录

db.student.remove({})

好了, 关于一些API就简单学了学,也懒得背,不会再去查吧
官方文档很是详细 https://docs.mongodb.com/getting-started/shell/introduction/,不过都是英文的.

mongoDB 的文档很是详细,全部的用法均可以在文档中查到.

mongoVUE

下面咱们看看mongoVUE ,这个破 解起来也很是简单,有须要也能够发我邮件.

建立一个链接

An easy way to learn shell commands. As you use MongoVUE, corresponding shell commands are displayed here for a quick reference.

当使用界面操做mongoDB,下面会给出相应的命令 ,诶这就很舒服了, 很灵动 .
注意, 想要使用 mongoVUE ,也必需要使用mongod 开机

好了,这个时候咱们使用命令行插入的数据却在mongoVUE 中怎么也找不到,通过查询发现

3.x默认是wiredTiger 引擎,2.x默认是mmapv1 引擎

打开MongoDB服务器,打开管理软件链接到服务器,此时若是数据库是默认条件下打开的,那么MongoVUE的collection列表是无法检测到,也无法新建的。这是由于MongoDB 3.2以后默认启动的是wiredTiger引擎,这个引擎和以前的引擎不一样,而管理软件匹配的仍是以前的引擎,因此没法使用。

此时要从新启动MongoDB服务器。启动命令是: mongod –-storageEngine mmapv1 –-dbpath XXXXX, 其中XXXXX是你的数据库存储路径。这样启动以后,再使用MongoVUE链接数据库服务器就能够了。

因而使用

mongod –-storageEngine mmapv1 –-dbpath D:/mongoDB/data

这样就行了

不过仍是建议使用命令行操做, 用mongoVUE 看看就能够了,由于 nodejs 的语法和shell 很是类似.

下面开始讲解 nodeJS若是操做mongoDB

相关文章
相关标签/搜索