use*_*347 5 mongodb aggregation-framework
我正在尝试使用新的聚合框架将以下类似SQL的语句转换为mongo-query .
SELECT * FROM ...
GROUP BY class
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已设法编写以下内容,但效果很好 - 但只选择/返回一个字段.
db.studentMarks.aggregate(
{
$project: {
class : 1 // Inclusion mode
}
},
{
$group: {
_id: "$class"
}
}
);
Run Code Online (Sandbox Code Playgroud)
我还尝试使用$ project pipelines 排除模式,添加一个从不存在的字段名称,以欺骗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"
}
}
);
Run Code Online (Sandbox Code Playgroud)
我之所以需要返回所有字段,是因为我不知道(将来)将会出现哪些字段.例如,"学生"可能具有字段x,y,z或不具有字段x,y,z.因此,我需要"全选",将结果按单个字段分组并返回,为了通用目的 - 不必是"学生标记",可以是任何类型的数据集,而不知道所有领域.
出于上述原因,我不能简单地预测所有必须返回的字段 - 再次 - 因为我不会知道所有字段.
我希望有人知道使用新聚合框架解决问题的好方法.
根本不要在管道中使用项目操作员。
db.studentMarks.aggregate({
$group: { _id: "$class" }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5134 次 |
| 最近记录: |