我正在尝试对以下字段进行分组并根据分组进行过滤。
示例:
Document 1 { Id = 1, Name = X, Subject = A}
Document 2 { Id = 1, Name = X, Subject = B}
Document 3 { Id = 1, Name = X, Subject = A}
所以分组应该是Id,Name和If Subjects包含A推A还是推B
在上述情况下,它将是1,X,A
只需要3个值中的一个,但无法通过以下查询获得此值。
db.getCollection('Students').aggregate([
{ $project:
{
"_id": 0,
"Name": 1,
"Id":1,
"FilteredSubject": {
"$cond": {
"if": {"$eq": ["$Subject","A"]},
"then":"A",
"else":"B"
}
}
}
},
{ $match:
{"Name":{$eq: "X"}}
}
},
{ $group:
{ _id: {"Id":"$Id", "Name": "$Name"},
Result: {"$push":"$FilteredSubject"}
}
}
])
我得到了以下结果,两个主题被推入数组而不是if-else条件,只推动分组中的一个。
实际结果:
"result" : [
{
"_id" : {
"Id" : 1,
"Name" : "X"
},
"FilteredSubject" : [
A,
B,
]
预期结果:
"result" : [
{
"_id" : {
"Id" : 1,
"Name" : "X",
"FilteredSubject" : "A"
}
}]