【问题标题】:Return a Record Based on Weight Field in MongoDB在 MongoDB 中返回基于权重字段的记录
【发布时间】:2021-07-07 19:58:03
【问题描述】:

我有 2 个系列。一个用于位置,另一个用于配置。每个位置可以有多个位置。当我查询一个位置时,我想根据分配给该配置的权重返回一个配置。举个例子:

位置 A 有 3 个配置

  • Config1.weight = 500
  • Config2.weight = 1000
  • Config3.weight = 1000

上面的权重意味着 Config1 有 20% 的机会被退回,而 Config2/3 有 40% 的机会。我通过添加权重然后除以给出百分比的单个权重得到这个百分比。

配置1示例:

  • 500 + 1000 + 1000 = 2500
  • 500 / 2500 = .2
  • .2 * 100 = 20% 几率

我正在努力寻找一种相对简单的方法来做这件事。

附带说明:这是一个新系统,因此如果有更好的方法,我可以更改权重的存储/使用方式。

【问题讨论】:

  • 你能否假装你对上下文一无所知复习这个问题?这就是我们阅读它的方式,如果没有进一步的解释,“每个位置可以有多个位置”没有多大意义。 “根据重量返回配置”也没有。 “基于”的定义相当模糊。以您的 3 种配置为例,您查询的权重是多少以及您期望的结果是什么?
  • 我最终通过 Javascript 在我的微服务中而不是在数据库级别执行此操作,尽管我仍然希望在数据库中寻求一个选项以避免返回不必要的结果以进行进一步处理。回答您的问题:位置是美国的物理位置,向用户显示配置,主要是 HTML。我们进行了很多实验,因此每个配置都是我们运行的不同 GUI/实验。我期望返回的是基于权重的单个配置而不是数组。配置 1 应在 20% 的时间内返回。

标签: mongodb


【解决方案1】:

我最终使用了这里讨论的解决方案,虽然它不是在 MongoDB 中,而是我的 nodejs 微服务用于返回配置文件。

How to choose a weighted random array element in Javascript?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多