如何按条件聚合结果
How to aggregate a result by condition
我有一个集合,我需要根据这个集合计算一个分数,就这么简单。
计算我集合中所有学生的分数
如果学生属于 class 'A' 或 'B' 他得到 5 分 如果他属于 class 'C' 或 'D' 他得到4
学生:
{
name:"Aster",
classes:['A','B']
}
聚合不允许 $cond 上的 $in 运算符,所以我该如何继续
ps:打扰了。随时随地发送简短信息
不确定这是否可以完全解决您的问题,但您可以在 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]}
}
}])
我有一个集合,我需要根据这个集合计算一个分数,就这么简单。
计算我集合中所有学生的分数 如果学生属于 class 'A' 或 'B' 他得到 5 分 如果他属于 class 'C' 或 'D' 他得到4
学生:
{
name:"Aster",
classes:['A','B']
}
聚合不允许 $cond 上的 $in 运算符,所以我该如何继续
ps:打扰了。随时随地发送简短信息
不确定这是否可以完全解决您的问题,但您可以在 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]}
}
}])