MongoDB基础:增删改查

创建集合(添加数据)

// 引入Mongoose第三方模块,用来操作数据库
const mongoose = require('mongoose');
const { connected } = require('process');
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true, useUnifiedTopology: true }).then(() => {
    console.log('数据库连接成功!');
  }).catch((err) => {
    console.log(err, '数据库连接失败!');
  })
  //创建集合规则
const courseSchema = new mongoose.Schema({
  name: String,
  author: String,
  isPublished: Boolean
});
// 使用规则创建集合
// 1.集合名称
// 2.集合规则
const Course = mongoose.model('Course', courseSchema) //course
//创建文档
const course = new Course({
  name: 'node.js基础',
  author: 'xf',
  isPublished: 'true'
});
//将文档插入到数据库中
course.save();
-----------------------------------------------------------
//以下是另一种创建方式
-----------------------------------------------------------
  // 创建文档并文档插入到数据库中
Course.create({ name: 'Chinese', author: 'xf', isPublished: 'true' }, (err, result) => {
  console.log(err);
  console.log(result);
})

在这里插入图片描述

添加mongoimport命令

MongoDB数据库导入数据
mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据文件
没添加时:
在这里插入图片描述
在MongoDB的bin目录下找到mongoimport.exe的绝对地址,添加到计算机的环境变量中。(但这样我没有解决)

查询集合中的文档

// 查询用户集合中的所有文档,find中可以添加条件键值对。
Course.find().then(result => console.log(result))
//返回对象,默认返回集合中第一条文档
Course.findOne().then(result => console.log(result))
//返回条件对应的对象
Course.findOne({ author: 'xf' }).then(result => console.log(result))

数据库连接成功!
{ _id: 5f963c7ed6aa8825b01c9866,
name: ‘node.js基础’,
author: ‘xf’,
isPublished: true,
__v: 0 }

//年龄大于19,小于40的集合中所有文档,返回一个数组
Course.find({ age: { $gt: 19, $lt: 40 } }).then(result => console.log(result))

数据库连接成功!
[ { _id: 5f97cd642431813fd8b617ce,
name: ‘Chinese’,
author: ‘xf’,
isPublished: true,
age: 20,
__v: 0 } ]

//查询爱好有足球的集合中所有文档,返回数组
Course.find({ hobbies: { $in: ['足球'] } }).then(result => console.log(result))

数据库连接成功!
[ { _id: 5f97cf3afa462327746e3c80,
hobbies: [ ‘足球’, ‘篮球’ ],
name: ‘Chinese’,
author: ‘hh’,
isPublished: true,
age: 600,
__v: 0 } ]

//查询特定字段,返回一个包含ID的数组(我的数据中没有email这一项,所以没显示)
Course.find().select('name email').then(result => console.log(result))

*数据库连接成功!
[ { _id: 5f59978d578aa63f04588abb, name: ‘node.js’ },
{ _id: 5f59998ab4c1f51e645f37b5, name: ‘JavaScript’ },
{ _id: 5f599b695f34e23988d37042, name: ‘JavaScript123’ },
{ _id: 5f59d220d0d25b45cc0a274e, name: ‘JavaScript123’ },
{ _id: 5f963c7ed6aa8825b01c9866, name: ‘node.js基础’ },
{ _id: 5f963eddb729b503f88a1236, name: ‘Chinese’ },
{ _id: 5f964021540bdc266434d0aa, name: ‘Chinese’ },
{ _id: 5f9777defeb7442c10cd14f7, name: ‘Chinese’ },
{ _id: 5f97cd642431813fd8b617ce, name: ‘Chinese’ },
{ _id: 5f97cd776dbd032bb015ceaa, name: ‘Chinese’ },
{ _id: 5f97cf3afa462327746e3c80, name: ‘Chinese’ } ]

//在_id前加上-表示去掉该字段
Course.find().select('name email -_id').then(result => console.log(result))

数据库连接成功!
[ { name: ‘node.js’ },
{ name: ‘JavaScript’ },
{ name: ‘JavaScript123’ },
{ name: ‘JavaScript123’ },
{ name: ‘node.js基础’ },
{ name: ‘Chinese’ },
{ name: ‘Chinese’ },
{ name: ‘Chinese’ },
{ name: ‘Chinese’ },
{ name: ‘Chinese’ },
{ name: ‘Chinese’ } ]

//年龄升序排列查询,返回数组
Course.find().sort('age').then(result => console.log(result))

[ { _id: 5f97cd642431813fd8b617ce,
name: ‘Chinese’,
author: ‘xf’,
isPublished: true,
age: 20,
__v: 0 },
{ _id: 5f97cd776dbd032bb015ceaa,
name: ‘Chinese’,
author: ‘hh’,
isPublished: true,
age: 600,
__v: 0 },
{ _id: 5f97cf3afa462327746e3c80,
hobbies: [ ‘足球’, ‘篮球’ ],
name: ‘Chinese’,
author: ‘hh’,
isPublished: true,
age: 600,
__v: 0 } ]

//降序,在字段前加上-号
Course.find().sort('-age').then(result => console.log(result))

[ { _id: 5f97cd776dbd032bb015ceaa,
name: ‘Chinese’,
author: ‘hh’,
isPublished: true,
age: 600,
__v: 0 },
{ _id: 5f97cf3afa462327746e3c80,
hobbies: [ ‘足球’, ‘篮球’ ],
name: ‘Chinese’,
author: ‘hh’,
isPublished: true,
age: 600,
__v: 0 },
{ _id: 5f97cd642431813fd8b617ce,
name: ‘Chinese’,
author: ‘xf’,
isPublished: true,
age: 20,
__v: 0 } ]

 // 跳过前2个数据,只查询2条数据
Course.find().skip(2).limit(2).then(result => console.log(result))

数据库连接成功!
[ { _id: 5f599b695f34e23988d37042,
name: ‘JavaScript123’,
author: ‘黑马’,
isPublish: true,
__v: 0 },
{ _id: 5f59d220d0d25b45cc0a274e,
name: ‘JavaScript123’,
author: ‘黑马’,
isPublish: true,
__v: 0 } ]

删除集合中文档

//   根据ID删除,返回删除的文档
// 如果查询条件匹配了多条文档,会删除第一条
Course.findOneAndDelete({ _id: '5f97cf3afa462327746e3c80' }).then(result => console.log(result))
// 不传参,默认删光
Course.deleteMany({}).then(result => console.log(result))

返回:
{n: 4, ok: 1}
删除数量4条,ok为1操作成功。

修改集合中的文档

// 把作者为'xf'的文档中的姓名改为'xfffffff' ,若有多个匹配只修改第一个
Course.updateOne({ author: 'xf' }, { name: 'xfffffff' }).then(result => console.log(result))

数据库连接成功!
{ n: 1, nModified: 1, ok: 1 }

返回查询到数量,修改数量,修改成功数量

// 更新多条数据,参数一无值,默认修改所有
Course.updateMany({}, {age: 23}).then(result => console.log(result))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值