相等条件在groupby mongodb中无法正常工作
相等条件($eq)在mongo db中无法正常工作。下面是我的mongo db文档(表) } 我的问题是相等条件在groupby mongodb中无法正常工作,mongodb,mongoose,mongoid,mongodb-query,Mongodb,Mongoose,Mongoid,Mongodb Query,相等条件($eq)在mongo db中无法正常工作。下面是我的mongo db文档(表) } 我的问题是 [ { "$match":{ "created":{ "$gte": ISODate("2015-01-19T07:26:49.045 Z"), "$lte": ISODate("2015-08-20T07:37:5
[
{
"$match":{
"created":{
"$gte": ISODate("2015-01-19T07:26:49.045 Z"),
"$lte": ISODate("2015-08-20T07:37:56.045 Z")
}
}
},
{
"$match":{
"cid":{
$nin:[
"59290C6FCCB7E82BD3861F9B6EB46930_2017dec8-0c2c-40c5-9c33-4e3ced0d692f",
"F098F7DBEFCBAE3ED0E815DE694F2307_8fbe1abc-0d11-443d-bd0a-bf5f181673de",
"9BAE0D8CA2A3B4BB641C8CCA2A0BD935_d7a76cf4-eb42-41f8-a851-06dd25269fbf"
]
}
}
},
{
"$unwind":"$a"
},
{
$group:{
_id:"$a.acid",
"PrestoBarImpression":{
"$sum":{
"$cond":[
{
"$eq":[
"$a.atp",
"abcd"
]
},
"$total",
1
]
}
},
"entries":{
$sum:1
}
}
}
]
我得到以下输出
{
"result":[
{
"_id":139,
"PrestoBarImpression":0,
"entries":1.0000000000000000
}
],
"ok":1.0000000000000000
}
如果我用ne代替eq,我会得到期望的输出,因为印象是1,条目是1
请让我知道我在查询中犯了什么错误。运算符通过比较两个值来工作,当值相等时返回true,当值不相等时返回false。因此,在运算符中,当运算符表达式的计算结果为true时,应返回值1,如果表达式的计算结果为false,则应返回0,以便累加器运算符为您提供实际总数
因此,您的管道阶段应如下所示:
{
$group: {
_id: "$a.acid",
"PrestoBarImpression": {
"$sum": {
"$cond": [
{
"$eq": [ "$a.atp", "abcd" ]
},
1,
0
]
}
},
"entries": { $sum: 1 }
}
}
文档中没有“总计”字段。你打算把哪个字段加起来?为什么错误的条件是1?嗨@BlakesSeven它不是它的$sum总数,对不起,我在看Prestobar impression的
$sum
条件中的字段。它确实存在于示例文档中。“cid”也不是,它也没有理由处于单独的$match
阶段。通过这里的可能性,你试图对一个不存在的字段求和。因此出现了0
。那么问题出在哪里呢?你的意思是对另一个你没有列出的领域进行合计,还是完全是其他领域?在文档中两个不存在的地方命名字段会让这有点神秘。您是否需要在问题中添加更多信息,或者情况如何?
{
$group: {
_id: "$a.acid",
"PrestoBarImpression": {
"$sum": {
"$cond": [
{
"$eq": [ "$a.atp", "abcd" ]
},
1,
0
]
}
},
"entries": { $sum: 1 }
}
}