我正在尝试使用新的聚合框架将以下类似 SQL 的语句转换为 mongo-query 。
SELECT * FROM ...
GROUP BY class
到目前为止,我已经设法编写了以下内容,效果很好 - 但只选择/返回了一个字段。
db.studentMarks.aggregate(
{
$project: {
class : 1 // Inclusion mode
}
},
{
$group: {
_id: "$class"
}
}
);
我还尝试使用 $project pipelines exclude mode,通过添加一个从不存在的字段名称,以欺骗 MongoDb 返回所有字段。虽然语法正确,但不返回任何结果。例如:
db.studentMarks.aggregate(
{
$project: {
noneExistingField : 0 // Exclusion mode...
// Attempt to trick mongo into returning all fields
// sadly this fails - empty array is returned.
}
},
{
$group: {
_id: "$class"
}
}
);
我需要返回所有字段的原因是我不知道(将来)哪些字段将存在或不存在。例如,“学生”可能有字段 x、y、z 或没有。因此,出于一般目的,我需要“全选”,将结果按单个字段分组并返回 - 不必用于“学生标记”,可以用于任何类型的数据集,而不知道所有字段。
由于上述原因,我不能简单地预测所有必须返回的字段 - 再一次 - 因为我不会知道所有字段。
我希望有人知道使用新的聚合框架解决我的问题的好方法。