设为首页 收藏本站
查看: 1399|回复: 0

[经验分享] mongoDB & Nodejs 访问mongoDB (一)

[复制链接]

尚未签到

发表于 2017-12-14 20:38:35 | 显示全部楼层 |阅读模式
  最近的毕设需要用到mongoDB数据库,又把它拿出来再学一学,下盘并不是很稳,所以做一些笔记,不然又忘啦.

安装 mongoDB & mongoVUE
  mongoDB: https://www.mongodb.com/download-center?jmp=nav#enterprise
  mongoVUE: mongoVUE 是一个mongoDB 数据库的可视化界面 ,官网被墙了. 而且企业版15天后功能受限,所以在网上找了个破解版的.
  好了,点击下载 ...
  mongoDB 我下载的是archive版的, 解压即用.
  
DSC0000.png
  将bin 目录配置到环境变量中 ,下面是mongoDB 一些常用的功能
  
DSC0001.png
  mongod 开机
  
mongo 运行数据库
  
mongoimport 导入数据库
  
mongoexport输出数据库
  
mongorestore 备份数据库
  
...
  好了,现在开机
  

mongod --dbpath d:/mongodb/data  

  --dbpath 表示数据库文档所在的文件夹,也就是说 mongoDB 真的有物理文件对应的数据库.
  
DSC0002.png
  
DSC0003.png
  可以看到,已经启动成功了

mongoDB 增删改查
  如果要使用这个数据库, 那就重新打开一个终端,并且保持 mongod 进程执行
  
DSC0004.png
  

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

DSC0005.png

  

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});
  

DSC0006.png

DSC0007.png

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

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

DSC0008.png

  删除当前数据库
  

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  

DSC0009.png


条件查询
  在mongoDB中, 一切都是基于对象的, 查询也是,其删除和更改操作也必须要先查询才可以,所以先深入了解连接查询.
  
这里举几个例子,条件查询, 并 , 或 ,排序
  继续使用上面的数据库,查询年龄大于20岁的男同学.
  

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

DSC00010.png

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

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

DSC00011.png

  查找所有的学生, 并按照姓名排序,如果姓名一样,则按照年龄排序,1升序,-1降序
  

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

DSC00012.png


修改
  修改里面也要条件查询, 必须要告诉mongo, 你要修改谁现在,将pawn 的年龄修改为 20岁
  

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

DSC00013.png


  但是,如果查询到多条数据,那么只会修改第一条,所以需要加一个参数 {multi:true}
  
将所有年龄为20岁的名字改为 dandy

  

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

DSC00014.png

  如果不加 $set 呢? 它会覆盖掉原来所有数据
  

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

DSC00015.png


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

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

DSC00016.png

  但是,如果查询到多条数据,那么删除的时候就会全部删除,如果只删一条, 需要加入参数justOne:true
  删除名为dandy 的一个人
  

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

DSC00017.png

  删除所有记录
  

db.student.remove({})  

  好了, 关于一些API就简单学了学,也懒得背,不会再去查吧
  
官方文档非常详细 https://docs.mongodb.com/getting-started/shell/introduction/,不过都是英文的.
  mongoDB 的文档非常详细,所有的用法都可以在文档中查到.

mongoVUE
  下面我们看看mongoVUE ,这个破 解起来也非常简单,有需要也可以发我邮件.
  创建一个连接
  
DSC00018.png
  

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  

  这样就好了
  
DSC00019.png
  不过还是建议使用命令行操作, 用mongoVUE 看看就可以了,因为 nodejs 的语法和shell 非常相似.
  下面开始讲解 nodeJS如果操作mongoDB

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424154-1-1.html 上篇帖子: 刘小吉 下篇帖子: mongodb 3.4复制集配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表