0

我的 MongoDB 数据库中有一堆集合。为了说明我想要弄清楚的内容,这里有一个名为“Restaurant”的示例文档:

{ name: "Foo"
  categories: [Pizza, Food]
  visits: 10
  location: "San Francisco"
}

我需要能够查询位置设置为旧金山的前十名访问过的餐厅,这些餐厅按类别中的第一个类别分组。假设所有集合都具有相同的文档格式,那么目前将如何完成?

4

1 回答 1

2

首先,您要查询位置为 "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)
于 2012-09-05T21:56:10.370 回答