Я пытаюсь воспроизвести классическую схему блога от одного Post
до многих Comment
с помощью Morphia и Play Framework.
Моя схема в Монго:
{ "_id" : ObjectId("4d941c960c68c4e20d6a9abf"),
"className" : "models.Post",
"title" : "An amazing blog post",
"comments" : [
{
"commentDate" : NumberLong("1301552278491"),
"commenter" : {
"$ref" : "SiteUser",
"$id" : ObjectId("4d941c960c68c4e20c6a9abf")
},
"comment" : "What a blog post!"
},
{
"commentDate" : NumberLong("1301552278492"),
"commenter" : {
"$ref" : "SiteUser",
"$id" : ObjectId("4d941c960c68c4e20c6a9abf")
},
"comment" : "This is another comment"
}
]}
Я пытаюсь представить аспект блога в социальных сетях, поэтому я хотел бы предоставить на главной странице SiteUser
последние X комментариев друзей этого SiteUser
во всех сообщениях.
Мои модели следующие:
@Entity
public class Post extends Model {
public String title;
@Embedded
public List<Comment> comments;
}
@Embedded
public class Comment extends Model {
public long commentDate;
public String comment;
@Reference
public SiteUser commenter;
}
Из того, что я прочитал в другом месте , я думаю, мне нужно выполнить следующее для базы данных (где [a, b, c]
представляет SiteUser
s):
db.posts.find( { "comments.commenter" : {$in: [a, b, c]}} )
У меня есть List<SiteUser>
, чтобы передать Morphia для фильтрации, но я не знаю, как
- установить индекс на
Post
для Comments.commenter
изнутри Morphia
- на самом деле построить вышеуказанный запрос