【发布时间】:2015-01-18 00:19:35
【问题描述】:
我正在创建一个具有类似 Tinder 功能的应用程序。目前,我将用户的喜欢、不喜欢和匹配项存储在 3 个独立的集合中,这些集合的结构是这样的
{
"_id" : "user1_ID",
"matches" : [
{
"matchID" : "user2_ID",
"time" : "2015-01-16 21:19:50 America/Los_Angeles"
}
]
}
“_id”字段保存我们正在存储的匹配用户的 ID,“matches.matchID”字段保存某个用户匹配的用户的 ID。 “matches.time”字段保存他们与该用户匹配的时间戳。
Likes 和 Dislikes 集合与 match 集合相同,只是它们包含某个用户不喜欢或喜欢的用户的 ID。
我目前遇到的问题是我需要查询所有 3 个集合,以确保我不会向用户发送他们已经喜欢、不喜欢或匹配的其他用户,因此合并这些会更容易将 3 个集合合而为一,并按如下方式构建:
{
"_id" : "user1_ID",
"matches" : [
{
"matchID" : "user2_ID",
"time" : "2015-01-17 15:47:15 America/Los_Angeles"
}
],
"likes" : [
{
"likeeID" : "user3_ID",
"time" : "2015-01-17 15:47:15 America/Los_Angeles"
}
],
"dislikes" : [
{
"dlikeeID" : "user4_ID",
"time" : "2015-01-17 15:47:15 America/Los_Angeles"
}
]
}
虽然这可能会使查询更容易,但我担心这些数组可能会变得太大并使文档变得太大。
存储这些数据的正确方法是什么?我读过 gridFS 有助于分解大型文档,这是要走的路吗?如果是这样,我该如何实施呢?我对 gridFS 的工作原理还不是很熟悉。
【问题讨论】:
-
文集合变大你使用分片,MongoDB的力量。 docs.mongodb.org/manual/sharding 和课程可在 university.mongodb.com
标签: performance mongodb gridfs