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
中,您不能 query
个 DbRef
字段,除了 Id,因为此不支持 join
。由于 read operation
非常高,我会建议您参考 Post
中 Setting
文档的 embed
部分,而不是引用它。正如 mongo 数据库设计建议,如果 read > write
您应该 embed
文档。在这种情况下,查询将很简单。
解决方案 2
您可以首先在设置文档上触发两个数据库查询以获取 Setting
和 EVERYONE, FRIENDS
对 Post 文档进行查询以获取所有 post 和设置 in
查询.
解决方案 3
您可以使用 QueryDSL
轻松查询 DbRef 对象 for reference see this.
我正在开发一个简单的社交网络,需要有关 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
中,您不能 query
个 DbRef
字段,除了 Id,因为此不支持 join
。由于 read operation
非常高,我会建议您参考 Post
中 Setting
文档的 embed
部分,而不是引用它。正如 mongo 数据库设计建议,如果 read > write
您应该 embed
文档。在这种情况下,查询将很简单。
解决方案 2
您可以首先在设置文档上触发两个数据库查询以获取 Setting
和 EVERYONE, FRIENDS
对 Post 文档进行查询以获取所有 post 和设置 in
查询.
解决方案 3
您可以使用 QueryDSL
轻松查询 DbRef 对象 for reference see this.