mongoDB & Nodejs 访问mongoDB (一)

来源:互联网 发布:网络数据库的信息检索 编辑:程序博客网 时间:2024/04/24 15:43

最近的毕设需要用到mongoDB数据库,又把它拿出来再学一学,下盘并不是很稳,所以做一些笔记,不然又忘啦.

安装 mongoDB & mongoVUE

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

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

好了,点击下载 ...

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

将bin 目录配置到环境变量中 .
下面是mongoDB 一些常用的功能

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

好了,现在开机

mongod --dbpath d:/mongodb/data

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

可以看到,已经启动成功了

mongoDB 增删改查

如果要使用这个数据库, 那就重新打开一个终端,并且保持 mongod 进程执行

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

显示所有集合

show collections 

现在插入一条数据

db.student.insert({"name":"pawn","age":12,"gender":"male"});

查询集合

db.student.find() 

我们多插入几条数据,用来条件查询

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

由于在mongoDb中数据是没有格式的, 所以上面的第二条语句完全可行

下面做一个查询

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

也是采用一个对象查询, 这对于JSer 简直太友好了
删除当前数据库

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高考考了200多分怎么办 高考报名号忘了怎么办 中考只考500分怎么办 档案自提了之后怎么办 冬天衣服上的毛怎么办 四维预约不上怎么办 交了订金后悔了怎么办 信而富认证失败怎么办 南京市民卡坏了怎么办 南京市民卡断了怎么办 义乌市民卡丢了怎么办 常熟市民卡丢了怎么办 昆山市民卡丢了怎么办 市民卡丢了看病怎么办 儿童市民卡丢了怎么办 眉毛纹的太黑怎么办 法院执行书下了怎么办 汽车临牌过期了怎么办 考试用了hb铅笔怎么办 处对象处的心累怎么办 孩子初中毕业考不上高中怎么办 单位停交社保后怎么办 58同城电话骚扰怎么办 回民误吃了猪肉怎么办 回族人吃了猪肉怎么办 商场倒闭了商铺怎么办 吃了金毓婷出血怎么办 吃过毓婷后怀孕怎么办 新鲜枣子吃多了怎么办 xp系统重启黑屏怎么办 15岁初中生厌学怎么办 被九州教育骗了怎么办 腰疼的不能弯腰怎么办 长期弯腰导致的腰疼怎么办 孕妇闻了油漆味怎么办 闻了油漆味头晕怎么办 84消毒液闻多了怎么办 被青岛九州骗了怎么办 五菱之光噪音大怎么办 手机显示空sd卡怎么办 游戏要用net2.0怎么办