对文档内的数组进行排序和切片

时间:2015-01-27 14:37:59

标签: meteor

我的医生:

"_id" : "bf63XML4bo6CrfP9A",
    "comments" : [ 
        {
            "user" : "fzkhiAArD4mgAAjbL",
            "comment" : "what the hell are you doing in there?",
            "commentedAt" : 1422367883366
        }, 
        {
            "user" : "fzkhiAArD4mgAAjbL",
            "comment" : "tada tada",
            "commentedAt" : 1422368379037
        }, 
        {
            "user" : "fzkhiAArD4mgAAjbL",
            "comment" : "la la la la la",
            "commentedAt" : 1422368393536
        }, 
        {
            "user" : "fzkhiAArD4mgAAjbL",
            "comment" : "no no no",
            "commentedAt" : 1422368409692
        }
    ],
    "feed_id" : "ym8To4cdwwTcSczkS",

我想发送此文档中最近的3条评论,怎么做?

我尝试了不同的东西,没有任何工作

mycoll.find({_id:res._id},{fields:{sort: {commentedAt: 1}},fields: {comments:{$slice: 3}}});

FYO

我想在发布功能中使用它。

1 个答案:

答案 0 :(得分:0)

据我所知,您无法对评论进行排序,然后对其进行切片,只对其进行切片。如果你真的需要排序和切片,你应该使用transform,虽然我认为这在计算上会更昂贵。

但是,如果您按时间顺序将评论推送到阵列上,那么您应该可以(仅在服务器上):

mycoll.find({_id:res._id},{fields: {comments:{$slice: -3}}});

获得最后3个。