我有一个像这样的评论数据库模式:
Comments: {
postId: '',
body: '',
upvotedBy: [],
upvotes: 0
}
upvotedBy持有赞成它的用户的UserIds。 Upvotes持有评论收到的总票数。我的Comments.find()如下:
return Comments.find({
'postId': this._id
}, {
sort: {
'submitted': -1
}
});
所以我正在寻找要添加到排序位的东西,在upvotedBy数组中查找当前登录用户的Id,如果是,请将列表排序为当前的upvoted注释用户首先列出。这可能吗?寻找含糊不清的东西:
..
sort: {
'submitted': -1,
'upvotedBy' as upvotedByUser: checkIfInArray(userId)
}
..
答案 0 :(得分:0)
一种解决方案就是获取两组文档:包含当前用户注释的文档和不包含当前用户注释的文档。如果每个集都按submitted
排序,那么您只需要连接结果。例如:
var userId = Meteor.userId();
var sort = {sort: {submitted: -1}};
var myComments = Comments.find({
postId: this._id,
upvotedBy: userId
}, sort).fetch();
var otherComments = Comments.find({
postId: this._id,
upvotedBy: {$ne: userId}
}, sort).fetch();
myComments.concat(otherComments);