按照存储在用户集合数组中的“喜欢”时间顺序返回帖子列表

时间:2015-09-28 03:17:43

标签: json mongodb meteor

好的,所以这是我的问题。我现在有一个这样的数组,当用户“喜欢”一个帖子时,它会添加到一个帖子中,这也会捕获他们喜欢它的时间。

"liked_times" : [                                                     
        {                                                          
                "postId" : "5CeN95hYZNK5uzR9o",                   
                "likedAt" : ISODate("2015-09-28T02:55:08.803Z") 
        },                                                         
        {                                                          
                "postId" : "vN7uZ2d6FSfzYJLmm",                   
                "likedAt" : ISODate("2015-09-28T02:55:26.118Z") 
        },                                                         
        {                                                          
                "postId" : "b5JEtHb9hCsQPeEQB",                   
                "likedAt" : ISODate("2015-09-28T02:55:31.359Z") 
        }                                                          
]      

我们过去只是捕获了postId,但更新了这篇文章的时间How would I return the order of MongoDB Posts by time Favourited by user?

那么我们以前就可以通过以下方式检索帖子:

Posts.find({ _id: { $in: user.liked } }, 
  {sort: {createdAt: -1} });

但是现在我想弄清楚如何使用这个新数据以他喜欢的顺序返回用户喜欢的帖子。我敢肯定必须有一个相对简单的方法。

根据评论进行编辑:我还有一个简单的数组或文档列表,只有postId

"liked" : [
                "D4turxiezBvPtNjDr",
                "Hk2YpqgwRM4QCgsLv",
                "vN7uZ2d6FSfzYJLmm",
                "beNdpXhYLnKygD3yd",
                "EBMKgrD4DjZxkxvfY"
        ],

当用户喜欢帖子时,ID会添加到此列表的末尾。但是,当我使用return Quotes.find({ _id: { $in: user.liked } };返回帖子时,它们的排序顺序不同(我认为是由于Minimongo本地缓存行为)。

还有另一种方法我应该调用这些文档按照数组存储它们的特定顺序对它们进行排序吗?或者我应该继续尝试在代码中以编程方式使用likedAt次来解决这个问题?

0 个答案:

没有答案