MongoDB介绍
- 关系型数据库和非关系型数据库
- 关系型数据库: mysql, oracle, sqlserver
- 非关系型数据库:
- 一条数据就是一个document(文档)
-
(一) mongoose 连接数据库
安装mongoose模块
npm i mongoose --save
在nodejs中使用mongoose连接数据库(把数据库连接做成一个模块, 在需要的时候倒入即可) ```javascript // 数据库连接模块, 不使用module.exports,模块被require便被直接执行
// 导入mongoose模块 const mongoose = require(‘mongoose’); // 连接数据库,第一个参数为数据库地址(如果是远程数据库,修改地址即可),第二参数为对象,为了消除警告信息 mongoose.connect(‘mongodb://localhost/hero’, { useNewUrlParser: true, useUnifiedTopology: true }); // 获取连接对象,为了监听连接情况,后面这几行代码不要也可以,不过不要就无法知道连接是否成功 var db = mongoose.connection; db.on(‘error’, function (err) { console.log(‘数据库连接失败’, err); }); db.once(‘open’, function () { console.log(‘数据库连接成功’); });
3. 在app.js中导入即可
<a name="lg7KC"></a>
## (二) 数据增删改查
文档地址:<br />[http://www.mongoosejs.net/docs/index.html](http://www.mongoosejs.net/docs/index.html)
```typescript
// 创建用户数据结构, 就是一条数据,拥有哪些字段(属性)
var userSchema = mongoose.Schema({
name: '',
age: '',
});
// 创建一个model(模型), 模型用来跟数据库进行通信的
var userModel = mongoose.model('User',userSchema);
// 新增
var data = {name: '张三',age:25}
var model = new userModel(data);
model.save() // promise
// 删除
var query = {xxx: xxx}; // 删除条件
userModel.deleteOne(query); // 删除一条
userModel.deleteMany(query); // 删除多条
// 举例:
userModel.deleteMany({age:20}); // 删除age为20的所有数据
userModel.deleteMany({ _id: [_id1,_id2]}); // 删除_id为_id1、_id2的数据
// 更新
var query = {xx:xx}
var data = {xx:xx};
userModel.updateOne(query,data)
userModel.updateMany(query,data)
// 查找
var query = {xx:xx}; // 查找条件,由前端传过来
userModel.find(query); // 根据条件查找,若query对象为空,或者不传query对象为查找全部
userModel.findOne(query) // 查找一个
(三) gt和lt查询(了解)
$gt和$lt用于查询大于和小于的情况,比如要查询年龄大于18岁的用户
model.where('age').gt(18); // 查找年龄大于18岁的数据,注意:age在数据库中必须是number类型
(四) 排序
model.find().sort({ name: 1 });// 按名字升序排序,-1为降序排序
(五) robo3t操作
- 添加数据库
- 添加collection(集合)
- 添加document(文档)
- 批量添加文档
- 查找document
- 修改document