0

我有一系列电影,其中包括有多少人看过这部电影,具体取决于他们的年龄。一个例子是:

{
   name : "Return of Jedi",
   kids : 5,
   adults : 10,
   seniors : 3
}

这意味着有 5 个孩子、10 个成人和 3 个老年人观看了《绝地归来》。

我需要根据排名返回电影推荐。排名计算为与搜索匹配的该电影的观众总数。例如,如果我有一个孩子和成人的家庭,那么绝地归来的等级将是 13(#kids + #adults)。

MongoDB可以按计算表达式排序吗?如何?如果没有,是否有替代方案?

我想通过添加一个计算字段然后按它排序来使用聚合框架来解决这个问题。但这不会太耗费资源吗?

4

1 回答 1

0

您需要使用 $project,然后使用 $add。

就像是:

db.movies.aggregate({ $project: 
{ 
      movieName: "$name", 
      totalAudience: { $add : ["$kids","$adults","$seniors"]}
},
{ $sort : { totalAudience: -1 }}
);

将为您提供按观众总数 desc 排序的所有电影。

于 2013-02-24T16:37:51.367 回答