variants: [
{
name: 'variant1',
genotypes: {
person1: 2,
person2: 5,
person3: 7,
}
},
{
name: 'variant2',
genotypes: {
person1: 3,
person2: 3,
person3: 2,
}
}
]
不可能使用聚合框架进行所描述的那种计算--这不是因为没有用于非数组的$unwind
方法。即使Person:value对象是数组中的文档,$unwind
也无济于事。
“group by”功能(无论是在MongoDB还是在任何关系数据库中)都是对字段或列的值执行的。我们根据字段的值和基于另一字段的值的SUM/AVERY/ETC进行分组。
简单的示例是您建议的变体,将评等字段添加到示例文章集合中,但不是作为从用户到评等的映射,而是作为如下所示的数组:
{ title : title of article", ...
ratings: [
{ voter: "user1", score: 5 },
{ voter: "user2", score: 8 },
{ voter: "user3", score: 7 }
]
}
现在您可以将其聚合为:
[ {$unwind: "$ratings"},
{$group : {_id : "$ratings.voter", averageScore: {$avg:"$ratings.score"} } }
]
但是这个示例按照您所描述的结构应该如下所示:
{ title : title of article", ...
ratings: {
user1: 5,
user2: 8,
user3: 7
}
}
{ title : title of article", ...
ratings: [
{ user1: 5 },
{ user2: 8 },
{ user3: 7 }
]
}
CREATE TABLE T (
user1: integer,
user2: integer,
user3: integer
...
);
CREATE TABLE T (
username: varchar(32),
score: integer
);
现在我们使用SQL进行聚合:
按用户名从T组中选择用户名,平均分数;
对MongoDB的一个增强请求可能允许您将来在聚合框架中这样做--将值投射到键的能力,反之亦然。同时,总是有map/reduce。
MongoDB中的聚合框架有解释功能吗?我在文件里看不到。 我知道找到你就行了 但是在聚合框架中,我得到了一个错误
我正在评估MongoDB聚合框架在多大程度上适合我们的需求,因为我们目前运行在SQL Server之上。我很难执行特定的查询: 假设我有以下伪记录(建模为sql表中的列和mongodb集合中的完整文档) 我很难在mongodb聚合框架中找到合适的结构来执行这样的查询。我可以通过在管道中插入$match来查询单个范围的结果(即获取单个范围的结果),但我无法在单个管道查询中提取所有范围及其计数。
我在mongodb中的聚合有点问题; 收藏uczelna: 我的合计: 我想找到所有的医生(doktorzy)妇女(名字的最后一个字母a)在一所学校(uczelna)。imie(姓名) 告诉我我做错了什么,谢谢
我不熟悉Spring和Mongo。我正在使用Spring Batch获取一些报告。我的查询需要一些MongoItemReader不支持的聚合,所以我根据下面的stackoverflow链接扩展了该类。 如何在Spring批处理中使用MongoItemReader聚合查询 但我的聚合有点问题。我制作的聚合在mongoDB中运行良好,但无法将其转换为Spring mongo聚合。 MongoDb聚合按
是否可以在$match中执行OR? 我的意思是这样的:
任何关于如何实现这一点的指示和/或文件都将不胜感激。