我正在学习MongoDB聚合管道,我试图从alert('asd')
和if ( $("a").attr('data-followed-by').indexOf('buyer')>0 ) {
//do something ...
alert('asd')
}
的输出中获得匹配计数。我可以看到$unwind
和$group
的结果。但我不确定为什么我没有得到匹配的计数。请帮助获得大于25的百分比字段。
这是一个示例文档:
$unwind
我试过了:
$group
得到了这个输出:
{
"_id":ObjectId("599e9dbd8fbad926e712f902"),
"sample":"1",
"attribute":[
{
"functionName":"1",
"percentage":31.6
}
]
}
我试过了:
db.docs3.aggregate({
$unwind:'$attribute'
},
{
$group:{
_id:{
func:"$attribute.functionName",
percen:"$attribute.percentage"
}
}
})
我收到了一个错误。
答案 0 :(得分:0)
我不确定你是否想要计算
percentage > 25
或者
percentage > 25
如果您对第1号感兴趣,那么您无需展开attribute
数组即可应用您的匹配。以下内容将返回包含至少一个带percentage > 25
的属性的文档计数:
db.getCollection('other').aggregate([
{ $match: { 'attribute.percentage': { $gt: 25 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
])
如果您对第2号感兴趣,那么以下内容将返回percentage > 25
的属性计数:
db.getCollection('other').aggregate([
{ $unwind: '$attribute' },
{ $match: { 'attribute.percentage': { $gt: 25 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
])
以下文件:
{
"_id" : ObjectId("599e9dbd8fbad926e712f902"),
"sample" : "1",
"attribute" : [
{
"functionName" : "1",
"percentage" : 31.6
}
]
}
{
"_id" : ObjectId("59a54104e7e9cc2109863beb"),
"sample" : "1",
"attribute" : [
{
"functionName" : "2",
"percentage" : 21.2
}
]
}
{
"_id" : ObjectId("59a542c4e7e9cc2109863c45"),
"sample" : "1",
"attribute" : [
{
"functionName" : "2",
"percentage" : 20.2
},
{
"functionName" : "2",
"percentage" : 28.2
},
{
"functionName" : "2",
"percentage" : 35.2
}
]
}
第一个命令返回count=2
,第二个命令返回count=3
。
答案 1 :(得分:0)
使用货币符号获取当前值,并使用您在$ group阶段中使用的相同字段名称
db.docs3.aggregate({
$unwind:'$attribute'
},
{
$group:{
_id:{
func:"$attribute.functionName",
percen:"$attribute.percentage"
}
}
},
{
$match:{
"$_id.percen":{
$gt:25
}
}
})