morphia - 第一个限制,比过滤器

时间:2014-10-13 12:12:07

标签: mongodb morphia

有没有办法在morphia中编写查询,首先限制它,然后在有限的结果上执行过滤?

示例:

我在桌子上有十万行。 我想选择前几百行。 比过滤有限的徘徊线大查询得到结果。

我不想在这个过程中实现百行的结果。

感谢你

1 个答案:

答案 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阶段开始,然后添加其他阶段以查看它如何更改查询结果