// 引入 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);
// })