栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

填写记录中的缺失日期

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

填写记录中的缺失日期

您需要几个额外的步骤来返回默认值。首先,你需要使用

$group
_id
设置为
null
收集所有结果中的一个文件内。然后,您可以将$
map
与一组天作为输入。在其中,
$map
您可以使用$
indexOfArray
查找当前结果集中是否存在该日期。如果是(
index!= -1
),则可以返回该值,否则需要返回默认子文档,
views
并将其设置为
0
。然后,您可以使用$
unwind
来获取文档列表,并使用$
replaceRoot来将嵌套提升
stats
到顶层。

ProductView.aggregate([    { $match: { productId: '5b8c0f3204a10228b00a1745' } },    { $project: { day: { $substr: ["$createdAt", 0, 10] } } },    {        $group: { _id: "$day", count: { $sum: 1 }, time: { $avg: "$createdAt" },        }    },    { $sort: { _id: 1 } },    {        $project: { date: '$_id', views: '$count',        },    },    {        $group: { _id: null, stats: { $push: "$$ROOT" }        }    },    {        $project: { stats: {     $map: {         input: [ "2018-09-01", "2018-09-02", "2018-09-03", "2018-09-04", "2018-09-05" ],         as: "date",         in: {  $let: {      vars: { dateIndex: { "$indexOfArray": [ "$stats._id", "$$date" ] } },      in: {$cond: {   if: { $ne: [ "$$dateIndex", -1 ] },   then: { $arrayElemAt: [ "$stats", "$$dateIndex" ] },   else: { _id: "$$date", date: "$$date", views: 0 }          }       }  }         }     } }        }    },    {        $unwind: "$stats"    },    {        $replaceRoot: { newRoot: "$stats"        }    }]).exec((err, result) => ...)

您可以使用简单循环在应用程序逻辑中生成静态日期列表。我相信在MongoDB中也可以(使用$
range),但这可能会使此聚合管道复杂化。让我知道您是否满意,或者想尝试在MongoDB中生成该日期数组。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号