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

问题描述 投票:0回答:1

我正在开发一个简单的社交网络,需要有关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)。想法,如何解决这个问题?如何创建正确的查询?

spring mongodb spring-data-mongodb
1个回答
2
投票

解决方案1 在Mongo,你不能queryDbRef字段除了Id,因为没有支持join。由于read operation非常高,我会建议你在embedSetting文件的Post部分,而不是参考它。正如mongo DB设计建议如果read > write你应该embed文件。在这种情况下,查询将很简单。

解决方案2 您可以在设置文档上触发两个数据库查询,以获取带有SettingEVERYONE, FRIENDS和Post文档上的make查询以获取设置in查询的所有帖子。

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

© www.soinside.com 2019 - 2024. All rights reserved.