mongoose实现分页和复杂查询

var mongoose = require('mongoose');
mongoose.connect('mongodb://192.168.0.229:27017/Test');


var Cat = mongoose.model('Cat', {
    name: String ,
    _id:String ,
    age:{ type: Number, min: 18, max: 65 }
});


var query=Cat.find({});

query.where({age:30});
query.sort({ name: 'asc', age: -1 });
//query.and({_id:"123456222"});
query.or([{_id:"123456fff222"},{_id:"123456222"}]);
//query.limit(3); //限制条数
//query.skip(3)   //开始数 ,通过计算可是实现分页
//query.friends('name')
query.exec(function(err,docs){
    console.log(docs);

})



开发文档地址:http://mongoosejs.com/docs/api.html#query_Query-or

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用mongoose+koa2实现分页查询的示例代码: ``` const Koa = require('koa'); const Router = require('koa-router'); const mongoose = require('mongoose'); // 连接 MongoDB 数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); // 创建 Schema const userSchema = new mongoose.Schema({ name: String, age: Number }); // 创建 Model const UserModel = mongoose.model('User', userSchema); // 创建 Koa 应用和路由 const app = new Koa(); const router = new Router(); // 分页查询接口 router.get('/users', async (ctx, next) => { const page = parseInt(ctx.query.page) || 1; // 当前页码,默认为1 const limit = parseInt(ctx.query.limit) || 10; // 每页显示的记录数,默认为10 const skip = (page - 1) * limit; // 跳过的记录数 const users = await UserModel.find().skip(skip).limit(limit); // 查询指定页数的记录 const total = await UserModel.countDocuments(); // 查询总记录数 const totalPages = Math.ceil(total / limit); // 计算总页数 ctx.body = { page, limit, total, totalPages, data: users }; }); // 启动应用 app.use(router.routes()).use(router.allowedMethods()); app.listen(3000, () => { console.log('Server is running at http://localhost:3000'); }); ``` 在上面的示例中,我们创建了一个名为`users`的接口,通过`ctx.query.page`和`ctx.query.limit`来获取当前页码和每页显示的记录数。然后根据这些参数,使用`skip()`和`limit()`方法来查询指定页数的记录。最后,我们还查询了总记录数,并根据每页显示的记录数计算了总页数。最终返回的数据格式如下: ``` { "page": 1, "limit": 10, "total": 100, "totalPages": 10, "data": [ { "name": "张三", "age": 18 }, { "name": "李四", "age": 20 }, // ... ] } ``` 希望这个示例能够帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值