【发布时间】:2015-10-18 19:07:39
【问题描述】:
相等条件 ($eq) 在 mongo db 中无法正常工作。下面是我的 mongo db 文档(表)。
{
"_id":ObjectId("55b08b169d735e293624504a"),
"a":[
{
"acid":139,
"akey":"love",
"atp":"abcd",
"aadd":" ",
"adur":3073
}
],
"created": ISODate("2015-07-23T06:35:02.959 Z")
}
我的查询是
[
{
"$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。
请让我知道我在查询中做错了什么
【问题讨论】:
-
您的文档中没有“总计”字段。您实际上打算添加哪个字段?为什么错误条件会是 1?
-
嗨 @BlakesSeven 它不等于 $sum 抱歉
-
我正在讨论 Prestobar 印象的
$sum条件“内部”的字段。它确实存在于您的示例文档中。 “cid”也没有,它也没有理由处于单独的$match阶段。在这里您可能会尝试对不存在的字段进行总计。因此0. -
那么问题出在哪里?您的意思是对您未列出的另一个字段进行总计,还是完全是其他意思?在您的文档中似乎没有的两个地方命名字段使这有点神秘。您是否需要为您的问题添加更多信息或情况如何?
标签: mongodb mongoose mongoid mongodb-query