查询数据

65 阅读1分钟
// 引入 mongoose 模块
let mongoose = require('mongoose');
const { aggregate } = require('./db/article');
// 引入 表模型
// let user = require('./db/user');
let article = require('./db/article');
// 连接数据库
mongoose.connect('mongodb://127.0.0.1:27017/liujunxiong', { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => {
        console.log('数据库连接成功');
    })
    .catch(() => {
        console.log('数据库连接失败');
    })

    let time_start = Date.now();

    article.findById({_id:'601a66aa4411441df40f9721'})
    .then(d=>{
        console.log(d);
    })
return;
article
.find()
.populate('author',{username:1,_id:1})
// .aggregate([
//     {
//         $lookup: {
//             from: "users",
//             localField: "author",
//             foreignField: "_id",
//             as: "user_info"
//           }
//     }
// ])
.then(res=>{
    console.log('成功');
    console.log(res);
    let time_end = Date.now();
    console.log('结束时间:'+(time_end-time_start))
})
.catch(err=>{
    console.log('失败');
    console.log(err);
})




// user.find(
// {查询条件},
// {需要返回的数据设置为(1)不需要为(0)},
// {配置参数:skip:从第几条开始返回,limit:返回几条,sort:{_id:-1} 顺序(-1为倒序,1为正序)}
// )

// 查找符合条件的所有文档
// user.find()
// .then(res=>{
//     console.log('成功');
//     console.log(res);
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })


// 分页查询
// user.find({},{__v:0},{skip:0,limit:2,sort:{_id:-1}})
// .then(res=>{
//     console.log('成功');
//     console.log(res);
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })

// 查询并返回匹配的第一个文档
// user.findOne({sex:3})
// .then(res=>{
//     console.log('成功');
//     console.log(res);
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })

// 根据id查询并返回一个文档
// user.findById({_id:'601958bbaa60470cb4667d60'})
// .then(res=>{
//     console.log('成功');
//     console.log(res);
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })


// 查询并返回匹配的文档数量 弃用
// user.count({sex:3})
// .then(res=>{
//     console.log('成功');
//     console.log(res);
//     // res 直接返回数字 1
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })


// 查询文档数量 
// user.estimatedDocumentCount()
// .then(res=>{
//     console.log('成功');
//     console.log(res);
//     // res 直接返回数字 1
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })



// $gt 大于                     user.find({age:{$gt:18}})
// $lt 小于                     user.find({age:{$lt:18}})
// $or 或关系满足任意一项        user.find({$or:[{age:18},{sex:5}]})
// $nor 或关系取反满足任意一项   user.find({$or:[{age:18},{sex:5}]})
// $gte 大于等于                user.find({age:{$gte:20}})
// $lte 小于等于                user.find({age:{$lte:20}})
// $ne 不等于                   user.find({sex:{$ne:5}})
// $in 在多个值范围内            user.find({age:{$in:[18,15]}})  18 和 15
// $nin 不在多个值范围内         user.find({age:{$nin:[18,15]}}) 除了 18 和 15
// $all 匹配数组中多个值         user.find({age:{$all:[18]}})    必须满足条件
// $regex 正则,用于模糊查询     user.find({username:{$regex:'三'}}) 返回带有‘三’的所有数据
//                             user.find({name: {$regex: /^B.*/}}) 可以写正则表达式
// $size 匹配数组大小           user.find({arr: {$size: 3}})  需要是数组
// $mod 取模运算               user.find({age:{$mod:[6,2]}})  取age模运算6于1的数据


// $near 邻域查询,查询附近的位置(基于LBS)user.find({latlon:{$near:[经纬度],$maxDistance:500}})
// $maxDistance 范围查询,距离(基于LBS)user.find({latlon:{$near:[经纬度],$maxDistance:500}})


// $exists 字段是否存在           user.find({age:{$exists:true}}) 
// true:返回所有有age字段的数据
// false:返回所有没有age字段的数据

// 年龄小于18的数据 
// user.find( { age : { $gt: 18 } } );
// user.find({$where: "this.age > 18"})

// 年龄 大于18 小于30
// {age:{$gt:18,$lt:30}}
// 年龄 大于等于18 小于等于30
// {age:{$gte:18,$lte:30}}


// 按照查询条件来查询
// user.find({ages:{$exists:false}})
// .then(res=>{
//     console.log('成功');
//     console.log(res);
//     // res 直接返回数字 1
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })



// 多条件查询
// user
// .where('age').gte(18)
// .where('sex').gte(1)
// .then(res=>{
//     console.log('成功');
//     console.log(res);
//     // res 直接返回数字 1
// })
// .catch(err=>{
//     console.log('失败');
//     console.log(err);
// })