gpt4 book ai didi

mongodb - 存储/获取从 Mongo/RectiveMongo 列表中引用的值的最佳方法?

转载 作者:可可西里 更新时间:2023-11-01 10:32:58 25 4
gpt4 key购买 nike

我有一个很常见的用例——评论列表。每条评论都有一个作者。

我使用引用存储评论中对作者的引用,因为作者可以发表多条评论。

现在我正在使用 ReactiveMongo 并想尝试保持数据库访问异步,但在这种情况下,我不知道如何做。我对数据库进行了异步访问,以获取评论,但是对于每条评论我都必须获取作者,直到现在我知道的唯一方法是循环访问评论并同步获取用户:

val userOption:Option[JsObject] = Await.result(usersCollection.find(Json.obj("id" -> userId).one[JsObject], timeout)
//...

除此之外,我还可以:

  • 异步获取每个用户,但我必须引入一些功能来等待所有用户都被获取,以便返回响应,我的代码可能会变得一团糟。

  • 存储完整的用户对象 - 至少我需要在每个评论中的评论(图片、名称等)。这种冗余可能会变得难以管理,因为每次用户更改某些内容(与评论中存储的数据相关)时,我都必须浏览数据库中的所有评论并进行修改。

此处应用的正确模式是什么?

最佳答案

我刚才解决了这个问题。

mongo 中没有连接。您必须手动处理连接。

您的选择是:

  1. 遍历每个评论条目并为用户查询 mongo。这就是你正在做的。
  2. 从评论中获取所有用户 ID,在 mongo 中查询与这些 ID 匹配的用户,然后注意将用户与评论相匹配。这正是您所做的,但更优化了一些。
  3. 将用户嵌入用户的评论或评论中。不推荐这个,这可能不是评论/用户的正确位置。
  4. 考虑在显示评论时需要用户提供哪些数据集,并将这些信息嵌入到评论中

我最终选择了最后一个选项。
我们在每条评论中嵌入了用户 ID、名字和姓氏。此信息不太可能更改(创建后甚至可能不允许更改?)。
如果它可以更改,那么调整更新用户方法以使用新信息更新相关评论并不难(我们也这样做了)。
所以现在不需要加入。

关于mongodb - 存储/获取从 Mongo/RectiveMongo 列表中引用的值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491334/

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