我有一个基于此的集合,我需要计算一个简单的分数。
计算我的收藏中所有学生的分数 如果一个学生属于'A'或'B'级别,如果他属于'C'或'D'级别,他得到5分,那么他得到4分
学生:
{
name:"Aster",
classes:['A','B']
}
聚合不允许$ cond中的$ in运算符,所以我该如何继续
PS:借口。在旅途中发送简洁
答案 0 :(得分:4)
不确定这可以完全解决您的问题,但您可以在Mongo 2.6中使用$setIsSubset
:
db.collection.aggregate([
{ $project: { name: 1 ,
grade: { $cond: [{$setIsSubset: ["$classes", ["A","B"]]}, 5, 4]}
}
}])
如果classes
可以是字符串或数组:
db.collection.aggregate([
{ $project: { name: 1 ,
grade: {$cond: [{$or: [{$eq: ["$classes", "A"]},
{$eq: ["$classes", "B"]},
{$setIsSubset: ["$classes", ["A","B"]]}]},
5, 4]}
}
}])