【发布时间】:2014-02-13 01:56:57
【问题描述】:
我对 mongodb 有点陌生,我正在尝试设置一个简单的服务器,我将在其中拥有用户、帖子、cmets、喜欢和不喜欢的东西等等。我想知道应该以哪种方式最有效地设置?
我是否应该有一张表用于添加 userId 和 postId(对于 dislike 和 cmets 表或多或少相同)
或者如果喜欢、不喜欢和 cmets 是帖子的一部分会更好吗?喜欢:
//Post structure
{
"_id":"kljflskds",
"field1":"content",
"field2":"content",
"likes":[userId,userId,userId],
"dislikes":[userId,userId,userId],
"comments":[{comment object},{comment object},{comment object}]
}
因为对于每个帖子,当我检索它们时,我想知道它有多少喜欢,有多少不喜欢,有多少 cmets。对于第一个版本,我需要在服务器(不必要的处理器能力?)或电话(不必要的带宽)上进行多个查询。但第二个只需要一个查询。我相信将 cmets 作为帖子的一部分的第二种选择似乎更有效,但我不是专业人士,所以我想听听其他人对此有何看法?
【问题讨论】:
-
在面向对象的数据库中,没有表。通过一些技巧,您可以在帖子之外使用 cmets,但仅在一个请求中使用 cmets 查询帖子。集合不必包含相同的对象,因此您可以将 cmets 和帖子保存在同一个集合中并查询所有内容。此外,将 cmets 放在外面可以查询一定数量的 cmets。
-
你在这里绑定了 mongo 吗?我认为像 Neo4j 这样的graph database 更适合这类数据模型。
-
@Loïc Faure-Lacroix 如果我将所有内容都保存在一个集合中,我可以查询哪些帖子的 cmets 最多吗?还是从所有帖子中获得总喜欢的用户?
-
@RickyA 看起来很有趣,我现在不能为这个项目做这件事,但我一定会在以后的项目中检查它。
-
Likes in mongoDB的可能重复
标签: mongodb