有没有办法在morphia中编写查询,首先限制它,然后在有限的结果上执行过滤?
示例:
我在桌子上有十万行。 我想选择前几百行。 比过滤有限的徘徊线大查询得到结果。
我不想在这个过程中实现百行的结果。
感谢你
答案 0 :(得分:2)
使用聚合框架:db.collection.aggregate({...})
您可以在管道中按要求的顺序调用操作。它支持$ match,$ sort,$ limit和$ offset。你甚至可以多次调用一个操作。
这是一个符合您要求的简单示例:
db.blog.insert({ timestamp: 4, anonymous: false, rating: 2, views: 10 })
db.blog.insert({ timestamp: 5, anonymous: true, rating: 2, views: 5 })
db.blog.insert({ timestamp: 3, anonymous: true, rating: 1, views: 21 })
db.blog.insert({ timestamp: 1, anonymous: false, rating: 3, views: 20 })
db.blog.insert({ timestamp: 2, anonymous: false, rating: 5, views: 25 })
db.blog.aggregate([
{ $sort: { timestamp: 1 } },
{ $limit: 3 },
{ $match: { anonymous: false } },
{ $sort: { views: -1 } }
])
从$sort
阶段开始,然后添加其他阶段以查看它如何更改查询结果