我有一系列电影,其中包括根据年龄看电影的人数。一个例子是:
{
name : "Return of Jedi",
kids : 5,
adults : 10,
seniors : 3
}
这意味着5名儿童,10名成人和3名前辈看到了“绝地归来”。
我需要根据他们的排名返回电影推荐。排名计算为与搜索匹配的该电影的观看者总数。例如。如果我有一个孩子和成人的家庭,绝地归来的等级将是13(#kids + #adults)。
MongoDB可以按计算表达式排序吗?怎么样?如果没有,还有其他选择吗?
我想通过添加计算字段然后按顺序使用聚合框架来解决这个问题。但这不会太耗费资源吗?
答案 0 :(得分:0)
您需要使用$ project,然后使用$ add。
类似的东西:
db.movies.aggregate({ $project:
{
movieName: "$name",
totalAudience: { $add : ["$kids","$adults","$seniors"]}
},
{ $sort : { totalAudience: -1 }}
);
会为您提供按观众总数订购的所有电影。