MongoDB平均聚合不';我不能正常工作
我是NoSQL数据库的新手。我想要的是显示MongoDB平均聚合不';我不能正常工作,mongodb,aggregation,Mongodb,Aggregation,我是NoSQL数据库的新手。我想要的是显示标题,url和平均(评级)。 示例数据如下所示: { "_id" : ObjectId("52b3833bd3e98582d2bfb628"), "author" : { "name" : "Graydon Hoare", "email" : "graydon@gmail.com" }, "title" : "Why Rust ditched pure functions", "bo
标题
,url
和平均(评级)
。
示例数据如下所示:
{
"_id" : ObjectId("52b3833bd3e98582d2bfb628"),
"author" : {
"name" : "Graydon Hoare",
"email" : "graydon@gmail.com"
},
"title" : "Why Rust ditched pure functions",
"body" : "sth",
"url" : "http://thread.gmane.org/gmane.comp.lang.rust.devel/3674/focus=3855",
"date" : ISODate("2013-04-30T13:23:00.000Z"),
"starred" : 105,
"ratings" : [
3,
5,
3,
2,
4,
1,
3,
3,
3,
2,
3
],
"comments" : [
{
"user" : "tr0lltherapy",
"upVotes" : 18,
"downVotes" : 2,
"text" : "something",
"replies" : [
{
"user" : "thedeemon",
"upVotes" : 10,
"downVotes" : 0,
"text" : "something"
},
{
"user" : "mcandre",
"upVotes" : 0,
"downVotes" : 5,
"text" : "Performance? There are already a slew of performant languages. Assembler, C, C++, Go. What does Rust actually offer that's new and useful in this category, other than using my favorite abbreviation for the named function keyword, fn?"
},
{
"user" : "lacosaes0",
"upVotes" : 30,
"downVotes" : 6,
"text" : "Particular emphasis on memory safety."
}
]
},
{
"user" : "hypster",
"upVotes" : 30,
"downVotes" : 2,
"text" : "tl;dr everybody was type-fu fighting",
"replies" : [
{
"user" : "homoiconic",
"upVotes" : 15,
"downVotes" : 0,
"text" : "Here comes the Big Boss, Hu! Simon Peyton-Jones."
}
]
}
],
"tags" : [
"Rust",
"Computer",
"Programming"
],
"draft" : true,
"published" : true
}
我尝试了以下查询,但它无法正常工作,并将null
值放入平均值。我不知道该怎么修
db.getCollection('links').aggregate(
[
{
$match: {
"author.email": /@gmail.com$/
}
},
{
$project: {
_id: 0,
title: 1,
url: 1,
avgRatings: {
$avg: "$Ratings"
}
}
}
])
预期产出为:
title: "Why Rust ditched pure functions", url: "http://thread.gmane.org/gmane.comp.lang.rust.devel/3674/focus=3855",
avgRatings: 2.90
您有一个输入错误,
$Ratings
;使用$ratings
如下。聚合语法区分大小写
db.getCollection('links').aggregate(
[
{
$match: {
"author.email": /@gmail.com$/
}
},
{
$project: {
_id: 0,
title: 1,
url: 1,
avgRatings: {
$avg: "$ratings"
}
}
}
])
project
实际上做什么?组
和项目
的区别是什么?$project将带有请求字段的文档传递到管道中的下一个阶段$按指定的表达式对文档进行分组,并为每个不同的分组向下一阶段输出文档。