gpt4 book ai didi

javascript - 来自 MongoDB 键的动态频率图

转载 作者:可可西里 更新时间:2023-11-01 09:11:24 24 4
gpt4 key购买 nike

我正在通过 Meteor 使用 MiniMongo,我正在尝试创建一个基于一组动态查询的频率表。

我有两个主要字段,localHourlocalDay。我预计会有很多重叠,并且我想确定重叠最多的地方。我目前的做法是这样的。

if(TempStats.findOne({
localHour: hours,
localDay: day
})){//checks if there is already some entry on the same day/hour

TempStats.update({//if so, we just increment frequency
localHour: hours,
localDay: day
},{
$inc: {freq: 1}
})

} else {//if nothing exists yet, we put in a new entry

TempStats.insert({
localHour: hours,
localDay: day,
freq: 1
});

}

基本上,每当我有新数据要插入时,这段代码就会运行。目前它工作正常,因为在插入所有数据后,我可以按频率排序以找到最常出现的时间和日期集 (TempStats.find({}, {sort: {freq: -1}}).fetch()).

但是,我正在寻找一种按频率搜索任何键的方法。例如,搜索所有事情最常发生的,而不是日期和小时。按照我目前的做法,我需要有多个数据库和不同的插入方法,这有点荒谬。是否有 Mongo(特别是 MiniMongo)解决方案来根据键进行频率映射?

谢谢!

最佳答案

貌似miniMongo其实是不支持聚合的,所以这种操作比较困难。一种解决方法是在每天结束时汇总自己并将该汇总记录插入数据库(没有小时字段或将其设置为 -1 之类的东西)。相反,您也可以在每次插入时更新该记录,这很浪费。这将允许您对两者使用相同的集合,并且在其他数据库中相当常见。

您还应该考虑@nickmilon 的第一个建议,因为将 upsert 语句与 $inc 运算符一起使用会将您的示例减少为每个数据点的单个操作。

关于javascript - 来自 MongoDB 键的动态频率图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29574101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com