我的 MongoDB 数据库中有一堆集合。为了说明我想要弄清楚的内容,这里有一个名为“Restaurant”的示例文档:
{ name: "Foo"
categories: [Pizza, Food]
visits: 10
location: "San Francisco"
}
我需要能够查询位置设置为旧金山的前十名访问过的餐厅,这些餐厅按类别中的第一个类别分组。假设所有集合都具有相同的文档格式,那么目前将如何完成?
首先,您要查询位置为 "San Francisco" 的所有文档:
db.foo.find( {location: "San Francisco" } )
其次,要查找访问量最高的餐厅,您需要按餐厅的访问次数对结果进行排序。您会希望此列表按访问次数以相反的数字顺序排列,因此我们使用访问次数:-1:
db.foo.find( {location: "San Francisco"} ).sort( {visits: -1} )
为了只获得前 10 家餐厅,我们将此结果限制为 10 个结果:
db.foo.find( {location: "San Francisco"} ).sort( {visits: -1} ).limit(10)
最后,要获得按类别“分组”的结果,我们可以先按访问次数对结果进行排序,然后在该顺序内按类别排序:
db.foo.find( {location: "San Francisco"} ).sort( {visits: -1, categories: 1} ).limit(10)