Spring 数据 mongorepository,按内部对象字段查找

Spring data mongorepository, find by inner object field

我正在开发一个简单的社交网络,需要有关 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 is an enum with settings ONLY_ME, EVERYONE, FRIENDS.

情况是:一个朋友正在我的页面上查看,他可以看到我的具有正确隐私设置的帖子(等。他只能看到具有 PrivacySettings 的帖子:每个人,朋友,而不是 ONLY_ME ). 思路,如何解决这个问题?如何创建正确的查询?

解决方案 1
Mongo 中,您不能 queryDbRef 字段,除了 Id,因为此不支持 join。由于 read operation 非常高,我会建议您参考 PostSetting 文档的 embed 部分,而不是引用它。正如 mongo 数据库设计建议,如果 read > write 您应该 embed 文档。在这种情况下,查询将很简单。

解决方案 2
您可以首先在设置文档上触发两个数据库查询以获取 SettingEVERYONE, FRIENDS 对 Post 文档进行查询以获取所有 post 和设置 in 查询.

解决方案 3
您可以使用 QueryDSL 轻松查询 DbRef 对象 for reference see this.