MongoDB创建文档,以及导入数据,并对数据进行查询

MongoDB增删改查操作

创建集合

创建集合分为两步,一是对集合设定规则,二是创建集合,创建mongopse.Schema构造函数的实例即可创建集合。
在这里插入图片描述

创建文档

创建文档实际上就是向集合中插入数据
分为两步:

  1. 创建集合实例
  2. 调用实例对象下的sava方法将数据保存在数据库中
第一种方法 创建集合以及向集合中插入文档的步骤:

创建数据库后,要有具体的集合,在集合下面才是具体的数据。
在mongoose这个对象下面,有一个Schema构造函数,创建构造函数的实例就创建这个集合的规则,在里面创建一个对象,对象里规定的就是集合。
最后是创建集合,在mongoose对象下面有一个model方法用来创建集合,里面有两个参数,第一个参数代表集合名称,第二个参数代码集合规则。这个方法,返回的是一个构造函数。
想要插入数据,就实例化这个构造函数就可以。
实例对象有一个方法sava,作用是将创建的文档插入到数据库中

//mongoose第三方模块,用来操作数据库
const mongoose = require('mongoose');
//数据库链接
//playground为数据库的名字,此时在可视化软件里没有创建也没有哦关系,会自动创建
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true, useUnifiedTopology: true})
	//链接成功
	.then(() => console.log('链接成功'))
	//链接失败
	.catch(err => console.log(err, '链接失败'));
//创建集合规则
const courseSchema = new mongoose.Schema({
	name: String,
	authour: String,
	isPublish: Boolean
});

//使用规则去创建集合
const Course = mongoose.model('Course', courseSchema)  //在数据里的集合的名字实际为courses
//创建文档
const course  = new Course({
	name: 'node.js基础',
	author: '作者',
	isPublish: true
})
//把数据插入到数据库中
course.save();
第二种方法 创建集合以及向集合中插入文档的步骤:

在这里插入图片描述
在这里插入图片描述

//mongoose第三方模块,用来操作数据库
const mongoose = require('mongoose');
//数据库链接
//playground为数据库的名字,此时在可视化软件里没有创建也没有哦关系,会自动创建
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true, useUnifiedTopology: true})
	//链接成功
	.then(() => console.log('链接成功'))
	//链接失败
	.catch(err => console.log(err, '链接失败'));
//创建集合规则
const courseSchema = new mongoose.Schema({
	name: String,
	authour: String,
	isPublish: Boolean
});

//使用规则去创建集合
const Course = mongoose.model('Course', courseSchema)  //在数据里的集合的名字实际为courses

//第二种方式 插入文档

Course.create({
	name: 'Java',
	authour: 'a',
	isPublish: false
}, (err, result) => {
	console.log(err);
	console.log(result);
})

关于数据库的所有操作都是异步操作

向数据库中导入数据

在这里插入图片描述
步骤:
先配置环境变量,将下面的地址(也就是mongodb数据库的安装目录,将安装目录下的bin目录放置在环境变量中):
在这里插入图片描述
写到path环境中,配置环境的时候,在path后面的每一次配置用 ; 隔开
重启命令窗口
在命令行窗口,输入命令:
在这里插入图片描述

查询文档

find()返回的是一组数据,永远是数组,无论查询到几条文档
因为返回的是promise对象,所以可以用then()方法
在这里插入图片描述
在这里插入图片描述

//使用规则创建集合

const User = mongoose.model('User', userSchema);

//查询用户集合中的所有文档
User.find().then(result => console.log(result));
//查询id对应的文档
User.find({_id: '5c09f267aeb04b22f8460968'}).then(result => console.log(result));

findOne()返回的只有一条结果,默认返回当前集合中的第一条文档
在这里插入图片描述

User.findOne({name: '李四'}).then(result => console.log(result))

在这里插入图片描述

User.find({age: {$gt: 20, $lt: 40}}).then(result => console.log(result));

在这里插入图片描述

User.find({hobbies: {$in: ['足球']}}).then(result => console.log(result))

在这里插入图片描述
查询 name,email字段但是不查询id字段:

User.find().select('name email -_id').then(result => console.log(result))

查询结果:
在这里插入图片描述
在这里插入图片描述

//根据年龄字段进行升序排列
User.find().sort('age').then(result => console.log(result))
//根据年龄字段进行降序排列
User.find().sort('-age').then(result => console.log(result))

在这里插入图片描述
可以做分页效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值