我正在开发一个简单的社交网络,需要有关mongorepository查询的帮助。我有2个文件:
@Document(collection = "post")
public class Post {
...........
@DBRef
@Field("settings")
private Settings settings;
和
@Document(collection = "settings")
public class Settings {
..............
@Field("privacy_settings")
private PrivacySettings privacySettings;
}
PrivacySettings是一个包含ONLY_ME,EVERYONE,FRIENDS设置的枚举。
情况是:朋友正在我的页面上查看,他可以通过正确的隐私设置查看我的帖子(等等。他只能看到有关PrivacySettings的帖子:每个人,朋友,但不是ONLY_ME)。想法,如何解决这个问题?如何创建正确的查询?
解决方案1
在Mongo
,你不能query
的DbRef
字段除了Id,因为没有支持join
。由于read operation
非常高,我会建议你在embed
的Setting
文件的Post
部分,而不是参考它。正如mongo DB设计建议如果read > write
你应该embed
文件。在这种情况下,查询将很简单。
解决方案2
您可以在设置文档上触发两个数据库查询,以获取带有Setting
的EVERYONE, FRIENDS
和Post文档上的make查询以获取设置in
查询的所有帖子。
解决方案3
您可以使用QueryDSL
轻松查询DbRef对象for reference see this.