对流星集合内的数组进行排序

时间:2014-01-22 20:31:03

标签: meteor

我有这样的收集结构:

{
    _id: "JPsqqGJBgpwix5AqM",
    images: [
        {
            id: 123456,
            created: Thu Nov 14 2013 22:58:11 GMT+0200 (EET),
            height: 115,
            width: 350,
            url: "http://www.test.com/alckxm.jpg"
        },
        {
            id: 123456,
            created: Thu Jan 24 2013 01:46:55 GMT+0200 (EET),
            height: 115,
            width: 350,
            url: "http://www.test.com/awerrkxm.jpg"
        }
    ],
    username: "John"
},
...

我需要的是返回此集合中的所有图像,按日期排序。

我尝试了以下所有方法:

return Users.findOne({username: "John"}, {created: 1})
return Users.findOne({username: "John"}, {"images.created": 1})
return Users.findOne({username: "John"}, {sort: {created: 1}})
return Users.findOne({username: "John"}, {sort: {"images.created": 1}})

但这没有任何效果。

现在甚至可以这样做吗?

1 个答案:

答案 0 :(得分:9)

排序仅用于对整个文档进行排序。您需要执行findOne然后单独对图像阵列进行排序。例如:

var images = Users.findOne({username: "John"}).images;
return _.sortBy(images, function(image){ return image.created; });
相关问题