javascript - 修改查询以获得预期结果
问题描述
我正在尝试修改查询以获得预期的输出。我能够编写查询但没有按预期获得输出,以便我可以在前端绑定。
实际输出:-
{
"_id" : null,
"first" : 3571.0,
"second" : 24.0
}
预期输出:-
{ "_id" : null,
"opertion":edit,
"count" : 3571.0,
}
{ "_id" : null,
"opertion":read,
"count" : 24,
}
{ "_id" : null,
"opertion":update,
"count" : 9000,
}
我的查询:-
db.getCollection('blog').aggregate([
{ "$group": {
"_id": null,
"first": {
"$sum": {
"$cond": [{ "$in": ["$Operation", ["edit1", "edit2"]] }, 1, 0]
}
},
"second": {
"$sum": {
"$cond": [{ "$in": ["$Operation", ["read1", "read2"]] }, 1, 0]
}
}
},
},
])
解决方案
如果您有如下收藏:
[
{
"_id" : 1,
"operation" : "edit1" # some extra fields
},
{
"_id" : 2,
"operation" : "read1"
},
{
"_id" : 3,
"operation" : "update1"
}
]
通过使用 $project 和 $cond,您可以将“read1”、“read2”重命名为read
或更新为update
,或编辑为,edit
然后通过对新操作字段进行分组,您可以获得每个操作的计数。你可以使用这个查询:
db.aggregate([
{
"$project": {
"new_operation":
{
"$cond": [
{"$in":
["$Operation", ["edit1", "edit2"]]
}, "edit", {
"$cond": [
{"$in":
["$operation", ["read1", "read2"]]
}, "read", "update"]
}
]
}
}
},
{
"$group": {
"_id": "$new_operation",
"count": {"$sum": 1}
}
}
])
推荐阅读
- c# - 从 AJAX 返回的部分视图是否可以访问模型参数?
- python - k-means 返回 nan 值?
- javascript - Javascript:通过内部的onclick返回函数增加循环索引
- python - Python:如何将 pyautogui.locateOnScreen 中的左侧或顶部作为 int?
- python - Python创建列表列表
- bash - 在shell脚本中获取目录中的文件列表?
- javascript - JS:检查单词“handover”是否包含“hand”
- javascript - 数据未使用 axios 渲染/console.log,使用来自 mongoDB 的数据
- django - 由于此错误,我无法运行服务器:'urls.py'>' 似乎没有任何模式'"
- php - Laravel Passport 令牌过期方法不起作用