我有包含以下模式的文档的集合。我想过滤/查找所有包含性别女性的文档并汇总大脑评分的总和。我尝试了下面的语句,它显示了无效的管道错误。
db['!all'].aggregate({ $and: [ {'GENDER' : 'F'} , {'DOB' : { $gte : 19400801, $lte : 20131231 }} ] }, { $group : { _id : "$GENDER", totalscore : { $sum : "$BRAINSCORE" } } } )
架构:
{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a1a9"),
"DOB" : 19690112,
"GENDER" : "F",
"BRAINSCORE" : 65
},
{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a1a2"),
"DOB" : 19950116,
"GENDER" : "F",
"BRAINSCORE" : 44
},
{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a902"),
"DOB" : 19430216,
"GENDER" : "M",
"BRAINSCORE" : 71
}
如果需要将DOB数字转换为Date然后进行比较,这是一个答案。如果没有,数字或日期(例如1970)将错误地$gte到19400801(您可以尝试):
db['!all'].aggregate([
{
$addFields: {
"_temp_DOB": {
$dateFromString: {
dateString: {$toString: {$toLong: "$DOB"}},
format: "%Y%m%d"
}
}
}
},
{
$match: {
'GENDER': 'F',
'_temp_DOB': { $gte: new Date("1940-08-01"),
$lte: new Date("2013-12-31") }
}
},
{
$group: {
_id: "$GENDER",
totalscore: { $sum: "$BRAINSCORE" }
}
}
])
输出:
{ "_id" : "F", "totalscore" : 109 }
示例工作查询:
db.getCollection('NOTIF_EVENT_RESULT').aggregate([
{$match:
{'userId': {'$in' : ['user-900', 'user-1546']},
'criteria.operator': 'greater than', 'criteria.thresold' : '90', 'category' : 'capacity'}
},
{"$group" : {_id : {userId:"$userId"}, "count" : { "$sum" : 1} } }
])
您必须使用$匹配:
db['!all'].aggregate([
{$match:
{'GENDER': 'F',
'DOB':
{ $gte: 19400801,
$lte: 20131231 } } },
{$group:
{_id: "$GENDER",
totalscore:{ $sum: "$BRAINSCORE"}}}
])
输出:
{ "_id" : "F", "totalscore" : 109 }
但在我看来不对。有人能建议别的方法做这件事吗。
问题内容: 我试图实现使用中去(golang)我的MongoDB查询的一个功能氧化镁包。 以下是我的收藏: 资料夹: 文件: 以下是我编写的在外壳程序上成功运行的查询: 如果我在外壳上运行此脚本,则会得到所需的结果。基本上,集合会返回给我,其中包含通过链接的全部相关内容。我不在这里包括它,因为这个问题似乎已经太久了。 我试图将此查询转换为 mgo 能够解析和执行的内容。在下面的go代码中: 我总是
我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。
我使用Spring(引导)2.2.7与mongoDB 4.0运行在Debian Stretch(9.12)。我已经设置了3个集合,我试图通过聚合查找级联操作加入这些集合。 操作(节点类) 股票(组件类) 目录(产品类) 每个类都有一个将它们链接在一起的uuid字符串属性。 节点(传感器、接收器、基站等) 组件(带有序列号、条形码的交付产品…) 产品(市场人工制品) 在mongo shell中运行此
主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr
我想知道如何使用mongodb 3.2的java驱动程序对$lookup集合执行聚合$match。下面是我正在处理的两个集合的结构: 对两个 id (coll_one.foreign_id 的查找 这是我正在使用的Java代码: 当我移除火柴部分时,一切都很好。我尝试了这么多的可能性组合,但都没有成功!!! 有人能告诉我这是否可能吗????