MongoDB基于多个字段表达式的订单文档

时间:2013-02-24 16:04:17

标签: mongodb aggregation-framework

我有一系列电影,其中包括根据年龄看电影的人数。一个例子是:

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

这意味着5名儿童,10名成人和3名前辈看到了“绝地归来”。

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

MongoDB可以按计算表达式排序吗?怎么样?如果没有,还有其他选择吗?

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

1 个答案:

答案 0 :(得分:0)

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

类似的东西:

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

会为您提供按观众总数订购的所有电影。