MongoDB,对一个数组进行排序,该数组是文档字段的值,该数组上有一个切片

时间:2016-07-08 23:42:58

标签: mongodb mongodb-query

我有一个用于个人资料评论的Mongo集合,其结构如下:

{
    "_id": "",
    "comments": []
}

id指的是profiles集合中用户的ID。为了提高服务器功率,我只想在每页显示10条评论。为此,我使用Mongo的$slice运算符。这是我的查询代码。

mongoCols.profileComments.findOne({"_id":doc._id},{comments:{$slice:[(comPage-1)*10,10]}},function(err,doc) {

这是问题所在。我想以相反的顺序显示注释,这意味着最新的注释在第一页上,最新的注释在最后。我想到了一些解决方案,但它们效率不高。

1)我可以检索整个数组,然后使用JavaScript(我使用nodejs)对该数组进行排序,然后只获取我想要的10个元素。这似乎效率低下,因为当我只需要10时,我要求Mongo检索数组中可能有大量元素的内容。

2)我可以将每个评论作为单独的文档,并在一个字段中说明评论的用户。然后,我只能找到将评论发送给所请求用户的文档,并使用skip和limit选项仅检索我想要的10个文档。我的问题是每次请求用户评论时,Mongo都必须经历几乎每一条评论。这似乎效率低下,但到目前为止这是我最好的解决方案。

我更愿意保留我目前拥有的结构,但如果我需要改变它的工作方式,那么我会遵守。

0 个答案:

没有答案