拥有此收藏集-
{
"_id": "5b508587de796c0006207fa7",
"id": "1",
"status": "pending",
"updated_at": "2018-07-19 13:02:40",
"created_at": "2018-07-19 12:35:19"
},
{
"_id": "5b508587de796c0006207fa5",
"id": "2",
"status": "completed",
"updated_at": "2018-07-19 13:02:40",
"created_at": "2018-07-19 12:35:19"
},
我想要一个查询,该查询将通过 id 键将状态键相加。
例如-
{
"id":"1",
"pending":"1"
}
我在MongoDB上使用Laravel 5.5
答案 0 :(得分:1)
这里是工作中的MongoPlayground。查看Mongo对Aggregations和$group
operator的引用。
db.collection.aggregate([
{
$group: {
_id: "$status",
sumOfStatus: {
$sum: 1
}
}
}
])
编辑:经过校对后,我不确定这是您要找的内容。此example将为您返回每个id
的状态列表,例如:
[
{
"_id": "5",
"completed": 3,
"pending": 3
}
]
为此,我利用$cond
运算符,以便根据$sum
的值来有条件地status
个文档。一个缺点是您必须为每个值重复此操作。不确定是否可以解决这个问题。
关于Laravel的实现,我绝对不是Laravel专家,但是请查看此answer,它显示了有关如何访问aggregate()
方法的示例。