MongoDB查询文档(非常详细,不要错过哦~)

下面是在MongoDB中查询数据的操作的详细整理,希望可以帮助到有需要的小伙伴~
条件查询的前提条件是创建一个数据库,创建集合规则,创建文档、插入数据。

根据条件查询文档

  • 查询大于小于(在一定数组范围)的数据

注意:一定要把大于小于的数据改成数字类型

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

实例:

const mongoose = require('mongoose');

// 对于没有创建的数据库,会自动创建一个数据库
mongoose.connect('mongodb://localhost/playground',{useNewUrlParser: true,useUnifiedTopology: true})
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err,'数据库连接失败'))


// 创建集合规则 mongoose.Schema
const userSchema = new mongoose.Schema({
 // 字段: 类型
    name: String,
    age: Number,
    email:String,
    password:String,
    hobbies:[String]
});

// 使用规则创建集合
const User = mongoose.model('User',userSchema);

// 查询用户集合中的所有文档
// find()方法是根据条件进行查询的,我们可以传递条件
// User.find().then(result => console.log(result));

// 查询id为 5ff2bb784c7fcb619f081969 的数据
// User.find({_id:"5ff2bb784c7fcb619f081969"}).then(result => console.log(result))

// findOne()方法返回一条文档 默认返回当前集合中的第一条文档
// User.findOne().then(result => console.log(result))

// findOne()方法根据条件返回数据
// 返回name为lisi的数据
// User.findOne({name:"lisi"}).then(result => console.log(result))

// 查询用户集合中年龄字段大于20并且小于50的文档
// User.find({"age": {$gt:20}, "age":{$lt:50}}).then(result => console.log(result))
User.find({age:{$gt:20,$lt:50}}).then(result => console.log(result))

// 查询用户集合中包含 sing 爱好 的数据
// User.find({hobbies: {$in: ['sing']}}).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))

// 跳过2行数据,读取3行数据
// User.find().skip(2).limit(3).then(result => console.log(result))



在这里插入图片描述

按照这种方法就可以查出来了

下面是其他查询条件的示例写法:

// 查询用户集合中年龄字段大于20并且小于40的文档
User.find({age: {$gt: 10, $lt: 50}}).then(result => console.log(result))

// 查询用户集合中包含 sing 爱好 的数据
User.find({hobbies: {$in: ['sing']}}).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))

// 跳过2行数据,读取3行数据
User.find().skip(2).limit(3).then(result => console.log(result))

示例:

const mongoose = require('mongoose');

// 对于没有创建的数据库,会自动创建一个数据库
mongoose.connect('mongodb://localhost/playground',{useNewUrlParser: true,useUnifiedTopology: true})
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err,'数据库连接失败'))


// 创建集合规则 mongoose.Schema
const userSchema = new mongoose.Schema({
 // 字段: 类型
    name: String,
    author: String,
    email:String,
    password:String,
    hobbies:[String]
});

// 使用规则创建集合
const User = mongoose.model('User',userSchema);

// 查询用户集合中的所有文档
// find()方法是根据条件进行查询的,我们可以传递条件
// User.find().then(result => console.log(result));

// 查询id为 5ff2bb784c7fcb619f081969 的数据
// User.find({_id:"5ff2bb784c7fcb619f081969"}).then(result => console.log(result))

// findOne()方法返回一条文档 默认返回当前集合中的第一条文档
// User.findOne().then(result => console.log(result))

// findOne()方法根据条件返回数据
// 返回name为lisi的数据
// User.findOne({name:"lisi"}).then(result => console.log(result))

// 查询用户集合中年龄字段大于20并且小于40的文档
// User.find({age: {$gt: 10, $lt: 50}}).then(result => console.log(result))

// 查询用户集合中包含 sing 爱好 的数据
// User.find({hobbies: {$in: ['sing']}}).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))

// 跳过2行数据,读取3行数据
User.find().skip(2).limit(3).then(result => console.log(result))


end~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值