首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在MongoDB中建模投票系统的最佳方法

在MongoDB中建模投票系统的最佳方法
EN

Stack Overflow用户
提问于 2011-08-12 13:22:00
回答 2查看 3.1K关注 0票数 13

我试图在MongoDB中建立一个投票系统。你可以想象它是一个类似于reddit的投票系统。要求:

  1. 选票与对象相连。
  2. 检查用户是否对对象进行投票是非常快速的。应用程序需要知道登录用户是否对一个对象进行投票,而它循环遍历呈现投票按钮的对象列表。
  3. 最重要的是,它必须能够在给定的时间段(最后一小时、日、月等)内检索按其累计分数排序的对象,并具有合理的性能。
  4. 应该能够支持每一个目标的数千张选票。

我在这里看到两种方法(如果我错了,请纠正我!):

  1. 在每个对象中嵌入一个投票文档数组。我可能会存储投票用户的ObjectId、投票量和投票时间。voterId将是选票数组中每个嵌入的投票文档的关键,以便快速进行哈希查找。
  2. 使用引用对象的选票保存单独的选票集合。

我还玩过把选票嵌入到一个单独的集合中按小时分组的“水桶”中的想法。

第一条对于第二项要求来说是非常快的,但我不知道在这种情况下第三项要求是否可行。

对于第二项要求,第二项的速度要慢一些,我不知道第三项要求的表现如何/如何实现(地图减少?)

基本上,我似乎需要从第3号需求的快速解决方案开始,然后确保第2号需求不会太慢。想法?

势解

采用嵌入式方法。为每个对象添加一个参数,用于小时得分、日得分、月得分等。添加另一个布尔参数最近投票,最近每小时和最近一天。创建一个在对象上运行map-还原的脚本来计算和更新这些参数。

脚本将以三个变体通过cron运行。

  1. 10分钟间隔:计算前一个小时分数>0或最近投票结果为真的对象的每小时得分。在运行此脚本后,最近进行了-抽签= false。设置最近-小时=真。
  2. 3小时间隔:计算最近每小时=真的任何对象的每日得分.设置最近-小时=假。最近-每日=真。
  3. 24小时间隔:计算最近-日=真的任何对象的月得分.设置最近-每日=假。

这样做的目的是最大限度地减少对与正在运行的分数计算脚本无关的对象的不必要处理(每小时只应在上次运行时已对其进行投票的对象上运行,或者对未被投票且需要重置为0的对象运行)。另一个很好的好处是*-分数值不需要仅仅根据对象投票来计算。例如,您可以包括页面视图或其他任何内容。对这种方法的想法?

EN

回答 2

Stack Overflow用户

发布于 2011-08-15 10:23:39

请查看Mongo中的“原子操作人员投票”食谱:http://cookbook.mongodb.org/patterns/votes/。它没有告诉您如何实现聚合,但是您也许可以通过创建表示要投票的对象的驻留对象来实现这一点,但是要在特定的时间内这样做。

票数 2
EN

Stack Overflow用户

发布于 2011-08-12 22:48:41

如果您使用的是红宝石,则有一个用于Mongoid & MongoMapper的蒙戈插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7046462

复制
相关文章
算法复杂度比较
快速排序 nlogn 堆排序 nlogn 冒泡排序 在改良的冒泡下 最优时间复杂度为n 插入排序 最优下n 选择排序 n*n 归并 nlogn
全栈程序员站长
2022/11/17
3410
算法复杂度比较
02 Learning to Answer Yes/No
从最简单最基础的二分类问题出发,演示一个简单机器学习算法PLA的完整过程,见详细课件。
用户2183996
2018/09/29
3350
02 Learning to Answer Yes/No
比较复杂的sql面试题「建议收藏」
题目详见:https://leetcode.com/problems/trips-and-users/
全栈程序员站长
2022/07/29
5470
常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器
使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。
全栈程序员站长
2022/09/05
2.1K0
常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器
滤波器的分类
滤波器是一种用来减少或者消除干扰的电气部件,其功能是对输入信号进行过滤处理得到所需的信号。
FPGA开源工作室
2019/10/29
3.6K0
滤波器的分类
【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。
  最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获,这里做一点总结,也算是最这个函数有个完美的收尾吧。
用户1138785
2023/10/23
5310
【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Halcon中gen_gabor的比较。
基于速度、复杂性等因素比较KernelSHAP和TreeSHAP
来源:DeepHub IMBA本文约2200字,建议阅读5分钟本文中的实验,将展示 TreeSHAP 实际上有多快。 KernelSHAP 和 TreeSHAP 都用于近似 Shapley 值。TreeSHAP 的速度很快,但是它只能用于基于树的算法,如随机森林和 xgboost。而KernelSHAP 与模型无关。这意味着它可以与任何机器学习算法一起使用。我们将比较这两种近似方法。 本文中的实验,将展示 TreeSHAP 实际上有多快。另外还探索树算法的参数如何影响时间复杂度,这些包括树的数量、深度和特征
数据派THU
2022/08/29
5390
基于速度、复杂性等因素比较KernelSHAP和TreeSHAP
基于速度、复杂性等因素比较KernelSHAP和TreeSHAP
KernelSHAP 和 TreeSHAP 都用于近似 Shapley 值。TreeSHAP 的速度很快,但是它只能用于基于树的算法,如随机森林和 xgboost。而KernelSHAP 与模型无关。这意味着它可以与任何机器学习算法一起使用。我们将比较这两种近似方法。
deephub
2022/11/11
3840
基于速度、复杂性等因素比较KernelSHAP和TreeSHAP
RC低通滤波器_滤波器的基本原理
1.RC滤波器截止频率在线计算器:http://www.eechina.com/tools/rc_filter_cutoff_frequency.html
全栈程序员站长
2022/08/03
1.3K0
RC低通滤波器_滤波器的基本原理
滤波器基础-滤波器的种类与特性
  滤波器是什么?     滤波器是对波进行过滤的器件,一般有两个端口,一个输入信号、一个输出信号。可以说它是重要的电子元器件,滤波器把电源功率传输到设备上,大大衰减经电源传入的EMI电磁干扰信号,保
利又德智能感知
2023/04/11
1.3K0
滤波器基础-滤波器的种类与特性
记一道比较复杂的USB流量分析题
提取出来后可以看到得到的数据有空行,可以在提取时用 | sed '/^\s*$/d' 命令删去空行:
回天
2023/04/25
4120
记一道比较复杂的USB流量分析题
基于matlab的低通滤波器的设计_matlab带阻滤波器函数
大家好,又见面了,我是你们的朋友全栈君。 基于MATLAB 的带通滤波器设计 滤波前 滤波后 频谱图 50 100 150 200250300350 400 450 500 0.511.5 2 2.5 Frequency (Hz) T i m e 050100150 200250300350400450500 0.5 1 1.5 2 2.5 Frequency (Hz) T i m e 时域 图样 500 1000 1500 2000 2500 3000 3500 -1-0.8-0.6-0.4 -0.200
全栈程序员站长
2022/10/03
4850
C++之父:C++确实很复杂,不和其他语言比较
12月4日,C++之父Bjarne Stroustrup参加了全球C++及系统软件技术大会。
老九君
2021/01/12
1.7K0
Matlab滤波器设计:FIR滤波器与IIR滤波器设计实现示例
本文使用Matlab中的Signal Processing Toolbox中的designfilt函数,并根据频率响应实现如下两种滤波器:
用户1143655
2022/12/12
5.9K0
Matlab滤波器设计:FIR滤波器与IIR滤波器设计实现示例
带通滤波器的设计[通俗易懂]
一、滤波器:滤波器按照频带划分可以分为:低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BEF)。其中射频天线领域主要采用带通滤波器(BPF)。
全栈程序员站长
2022/08/19
4.3K0
带通滤波器的设计[通俗易懂]
stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图
带通滤波器(band-pass filter)是一个国家允许使用特定频段的波通过发展同时进行屏蔽其他频段的设备。比如RLC振荡回路问题就是这样一个可以模拟带通滤波器。
全栈程序员站长
2022/08/15
8240
stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图
ssh scp等消除每次问yes/no方法 原
用命令 ssh -l username hostname Are you sure you want to continue connecting (yes/no)?  1、这个是ssh安全认证是
拓荒者
2019/03/11
2.8K0
RC有源滤波器之带通滤波器(四)
过去的滤波器都是由R、L、C等无源元件组成,称为无源滤波器。现在的滤波器大都是由R、C元件与有源器件(如运算放大器)组成,称为RC有源滤波器。
全栈程序员站长
2022/06/26
1.3K0
RC有源滤波器之带通滤波器(四)
简谈FIR滤波器和IIR滤波器的区别
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2020/12/29
2K0
简谈FIR滤波器和IIR滤波器的区别
带阻滤波器
算法:带阻滤波器是减弱(或减少)一定频率范围信号, 但容许频率低于下限截止频率和高于上限截止频率信号通过。
裴来凡
2022/05/29
3550
带阻滤波器

相似问题

yesno滤波器用于内部变量分配和块内标签分配

13

Msgbox YesNo误差

44

复杂条件滤波器设计

13

复杂比较

15

YesNo消息框OnTop

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档