【发布时间】:2012-06-08 00:58:21
【问题描述】:
我有两个系列 - 购物者(特定日期店内的每个人)和海滩游客(特定日期海滩上的每个人)。每天都有条目,人们可以在海滩上,或者购物,或者两者都做,或者任何一天都不做。我现在想查询 - 过去 7 天内没有去海滩的所有购物者。
我是 Mongo 的新手,所以我的架构设计可能不适合 nosql 数据库。我在 join 上看到了类似的问题,在大多数情况下,建议进行非规范化。因此,我能想到的一种解决方案是创建集合 - 活动、日期索引、嵌入用户的操作。所以像
{
user_id
date
actions {
[action_type, ..]
}
}
现在插入变得昂贵,因为现在我必须在插入之前进行查询。
【问题讨论】:
-
为什么说插入前要查询?查询什么?
-
你还知道 $nin 运算符吗? (“不在”)
-
@AsyaKamsky 我认为 Op 意味着,要插入一个动作,首先需要查询正确的用户。
-
如果我看到一个新动作说“在海滩上”,我需要找到 user_id 的记录和日期,以便将动作嵌入到现有数据中。
-
如果将该操作插入到正确的用户文档中,那将是一个好主意 :) 但似乎这是不可避免的
标签: mongodb database-schema schema-design