Mongodb 数据建模/投票更新(向上和向下)

2024-05-16

Mongo 中有一个关于投票数据模型/更新查询的示例:
http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-原子更新 http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-AtomicUpdates

然而,我需要赞成票和反对票(基本上,一个人可以投赞成票或反对票)。另外,我希望选民能够改变主意,将赞成票改为反对票,反之亦然(因此选民名单和总数不合适)。

最好的数据模型和相应的更新调用是什么?

我看到两种可能性,要么做

'votes': [{ 'user_id' : ... , 'vote': ±1 }]

or

'upvoters': [...], 'downvoters': [...]

但我还无法对第一个进行更新查询,第二个看起来有点奇怪(尽管可能只是我)。


使用第二种模式似乎更简单。

Document:  { name: "name",
             upvoters: [name1, name2, etc],
             downvoters: [name1, name2, etc],
           }

要获得总票数,您可以获取文档并使用 doc.upvoters.length-doc.downvoters.length (每个文档以赞成者和反对者数组开始 [ ])

要记录用户“x”对项目“c”的任何赞成票,只需执行以下操作:

db.votes.update({name:"c"},{$addToSet:{upvotes:"x"},$pull:{downvotes:"x"}})

这是原子性的,即使运行 10 次也可以做同样的事情。 它还使您不必检查“x”是否已经投票给“c”以及以何种方式投票。

要记录反对票,只需将其反转即可:

db.votes.update({name:"c"},{$addToSet:{downvotes:"x"},$pull:{upvotes:"x"}})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongodb 数据建模/投票更新(向上和向下) 的相关文章

  • 文本搜索对于某些单词不返回任何内容

    我有一个带有 条目 集合的数据库 其结构如下 tags type mongoose Schema Types ObjectId ref Tag body String 我想要在我的网站上提供搜索功能 因此我在 body 属性上创建了一个文本
  • 将 MongoDB 聚合 $lookup 限制为仅 1 个匹配项

    有两个合集 users and reports 我的目标是进行一个聚合 获取所有用户和每个用户user包括用户的金额last report 这是我当前的聚合 db users aggregate lookup from reports lo
  • mongodump“失败:错误选项:只能将单个集合转储到标准输出”

    mongodump out 不起作用 它给了我这条消息 失败 错误的选项 只能将单个集合转储到标准输出 会发生什么 因此 例外是不言自明的 如果您使用 out 它只能在标准输出上显示单个集合 所以我想知道你想达到什么目标 如果你想输出一个特
  • Mongodb:$HINT 的性能影响

    我有一个使用复合索引并在 id 上排序的查询 复合索引在索引末尾有 id 它工作正常 直到我添加 gt我的查询的子句 IE 初始查询 db colletion find field1 blabla field2 blabla sort id
  • 使用 mongoose 将非常大的 CSV 保存到 mongoDB

    我有一个包含超过 200 000 行的 CSV 文件 我需要将其保存到 MongoDB 如果我尝试 for 循环 Node 将耗尽内存 fs readFile data txt function err data if err throw
  • 抛出新的 mongoose.Error.MissingSchemaError(name); ^ MongooseError:尚未为模型“商人”注册架构

    throw new mongoose Error MissingSchemaError name MongooseError 尚未为模型 商人 注册架构 使用 mongoose model 名称 模式 在 Mongoose model C
  • 如何访问 Pandas DataFrame 中嵌入的 json 对象?

    TL DR 如果 Pandas DataFrame 中加载的字段本身包含 JSON 文档 那么如何以类似 Pandas 的方式使用它们 目前我直接从 Twitter 库转储 json 字典结果 twython https github co
  • Mongodb聚合框架:$group是否使用索引?

    我正在尝试使用聚合框架 match and group阶段 做 group阶段使用索引数据 我正在使用最新的可用 mongodb 版本 2 5 4 group不使用索引数据 来自 mongoDBdocs http docs mongodb
  • 使用 Homebrew 安装 mongodb 时遇到问题

    我正在尝试让 Mongo 运行 我安装了包管理器Homebrew https brew sh 然后我使用了 Mongo 站点上的命令 brew update brew install mongodb 这似乎安装正确 我输入了mongo在新的
  • Spring Mongo Populator 一一

    我在 Kotlin 上使用 MongoDB 和 Spring 并且希望我的应用程序在启动时填充 MongoDB 集合 并在每次启动时清理 我的问题是 如果我填充的某些数据有问题 如何才能一一填充数据以便容错 my code Configur
  • MongoDB - 编辑器变量 - MongoDB shell - Windows 7

    EDITOR 变量功能真的可以在 Windows 7 上使用吗 我正在读一篇文章 说一旦我们设置了 EDITOR 变量在 mongorc js 中 我们只需在 shell 中输入 编辑变量名 and var name将被加载到编辑器中 在我
  • 使用mongodb聚合框架按数组长度分组

    我有一个看起来像这样的集合 id id0 name saved things id id1 name saved things id id2 name saved things etc 我想使用 mongodb 的聚合框架来得出一个直方图结
  • Mongo JSON 文档 -> JSON -> BSON

    我正在使用 Node js 构建一个使用 mongodb 的 Web 套接字服务器 我使用 node mongodb native 作为访问 mongodb 的库 当我对数据库中的对象调用 console log sys inspect i
  • 聚合和展开数组,但保留顶级键

    假设我的收藏中有以下文档Classes收藏家 id ObjectId 5df58d45244a850d54b922c8 mentors numOfMentors NumberInt 1 mentorList ObjectId 5c9ba63
  • 带有卷的 docker 中的 Mongo db 持久化

    我正在尝试创建一个 mongo 数据库容器 但无法使数据持久化 这是我的 docker compose yml version 3 2 services mongodb image mongo 2 4 command smallfiles
  • Mongodb 限制聚合查询中的数组

    我正在尝试编写一个查询来返回每个类别中的前 X 个术语 例如前 5 个 前 10 个等 每个术语都有一个关联的类别 并且基于另一个术语的帮助堆栈溢出问题 https stackoverflow com questions 25666187
  • 如何从数组中删除重复的条目?

    在下面的示例中 Algorithms in C 出现两次 The unset修饰符可以删除特定字段 但如何从字段中删除条目 id ObjectId 4f6cd3c47156522f4f45b26f favorites books Algor
  • 使用 Spring Data MongoDB 查询纯 BSON

    是否可以在 Spring Data MongoDB 中查询纯 JSON BSON 数据 而无需将数据转换为实际的模型实现 我能找到的只是 MongoOperation 的
  • Mongodb 聚合数组中的子文档

    我正在使用 mongodb 作为后端实现一个小型应用程序 在此应用程序中 我有一个数据结构 其中文档将包含一个包含子文档数组的字段 我使用以下用例作为基础 http docs mongodb org manual use cases inv
  • Mongodump之后,调用MongoRestore挂起

    我们正在尝试在相对较小的数据库上做一个简单的 MongoDump 我们的步骤很简单 export 从目标机器上删除现有数据库 在目标机器上导入 MongoDump 完美执行 mongodump out root mongo prod DB

随机推荐