我有一组电影,根据年龄的不同,其中包括有多少人看过这部电影。例如:
{
name : "Return of Jedi",
kids : 5,
adults : 10,
seniors : 3
}
这意味着《绝地归来》有5名儿童、10名成年人和3名老年人观看。
我需要根据他们的排名返回一个电影推荐。排名计算为与搜索匹配的电影的观众总数。例如,如果我有一个由孩子和成年人组成的家庭,绝地归来的等级将是13(#孩子+#成年人(。
MongoDB可以通过计算表达式进行排序吗?怎样如果没有,还有其他选择吗?
我曾想过使用聚合框架来解决这个问题,添加一个计算字段,然后按它排序。但这不会太耗费资源吗?
您需要使用$project,然后使用$add。
类似于:
db.movies.aggregate({ $project:
{
movieName: "$name",
totalAudience: { $add : ["$kids","$adults","$seniors"]}
},
{ $sort : { totalAudience: -1 }}
);
将为您提供按总观众描述排序的所有电影。