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

时间:2019-03-20 14:07:19

标签: spring mongodb spring-data-mongodb

我正在开发一个简单的社交网络,并且需要有关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,所有人,朋友的枚举。

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

1 个答案:

答案 0 :(得分:2)

解决方案1 ​​
Mongo中,您不能在query个字段中DbRef除ID外,因为此字段不支持join。由于read operation很高,因此建议您在embed的{​​{1}}文档的Setting部分中使用,而不要引用它。正如mongo DB设计所建议的,如果Post您应该read > write该文档。在这种情况下,查询将很简单。

解决方案2
您可以在设置文档上首先触发两个数据库查询,以在发布文档上使用embed的make查询来获取Setting,并通过设置EVERYONE, FRIENDS查询来获取所有发布。

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