mongoDB & Nodejs 访问mongoDB (一)
最近的毕设需要用到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() // 查询集合
我们多插入几条数据,用来条件查询,由于在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
mongoDB & Nodejs 访问mongoDB (一)的更多相关文章
- mongoDB & Nodejs 访问mongoDB (二)
非常详细的文档http://mongodb.github.io/node-mongodb-native/2.2/quick-start/quick-start/ 连接数据库 安装express 和 m ...
- MongoDB最简单的入门教程之二 使用nodejs访问MongoDB
在前一篇教程 MongoDB最简单的入门教程之一 环境搭建 里,我们已经完成了MongoDB的环境搭建. 在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的 ...
- 使用nodejs 访问mongodb
我使用了 express 框架 目录结构 db.js 文件 function connectionDB(hostname, port) { //注释地方暂时没有使用.是把官方代码照抄下来 // var ...
- 使用 MongoDB shell访问MongoDB
- NodeJS+Express+MongoDB
一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...
- MongoDB最简单的入门教程之五-通过Restful API访问MongoDB
通过前面四篇的学习,我们已经在本地安装了一个MongoDB数据库,并且通过一个简单的Spring boot应用的单元测试,插入了几条记录到MongoDB中,并通过MongoDB Compass查看到了 ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- 大熊君大话NodeJS之------MongoDB模块(额外篇)
一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块). (1),简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为 ...
随机推荐
- IOS开发缓存机制之—本地缓存机制
功能需求 这个缓存机制满足下面这些功能. 1.可以将数据缓存到本地磁盘. 2.可以判断一个资源是否已经被缓存.如果已经被缓存,在请求相同的资源,先到本地磁盘搜索. 3.可以判断文件缓存什么时候过期.这 ...
- 星级评分条(RatingBar)的功能和用法
星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...
- [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds...
INSERT INTO `ftms_active_dealer`(dealer_code,dealer_name,active_id,dealer_state)VALUES('415A1','贺磊'1 ...
- 画廊视图(Gallery)的功能和用法
Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner是同一个列表框.它们之间的区别是Spinner显示的垂直的列表选择框,而Gallery显示的是一 ...
- 部署Sharding分片
这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群. MongoDB 的数据分块称为 ch ...
- C/C++将一个整型数组拼接成一个字符串
参考: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdio.h> #include <string.h> int ma ...
- doubango(5)--SIP协议栈传输层的启动
SIP协议的INVITE消息发起流程 当通过sip协议发起一个会话时,需要通过invite消息实现该流程.而SIP协议是一个基于事务的协议,每一个sip会话的都是通过sip部件间的一系列消息来完成的. ...
- display的none与block(判断登录界面的账号密码是否为空)
判断登录界面的账号密码是否为空的时候又不想用alert显示就需要用display来隐藏alert啦(在设置时切忌要将隐藏的内容写在账号和密码的div中,否则会根据屏幕的分辨率不同而有所变化,这是本人教 ...
- c#.net的网站出现“正在中止线程””异常的原因和解决方法
出现“正在中止线程”异常通常都是由于以下三种原因导致引起,给出解决方案如下: 解决方案: 1.针对Response.End,调用 HttpContext.Current.ApplicationInst ...
- 11g默认审计选项
[注:参考了maclean的网文]11g默认审计选项AUDIT_TRAIL参数的缺省值为DB,审计数据记录在数据库中的AUD$审计字典基表上.在11g中CREATE SESSION将被作为受审计的权限 ...