如何.find()“最后一个数组元素的url”?

时间:2015-06-30 11:39:21

标签: mongodb

这是我的文档结构:

{
        "name": "object name",
        "details": "object details",
        "images": [{
                "size": "large",
                "url": "http://domain.com/large.png"
        }, {
                "size": "medium",
                "url": "http://domain.com/medium.png"
        }, {
                "size": "small",
                "url": "http://domain.com/small.png"
        }]
}

有些文档只有“大”图像,有些文件全部有,有些只有“中”图像。我想要做的是,获取数组的最后一个元素的URL。

以下是我的尝试:

.find({},{"images.url":1}) 

返回所有网址。 我也尝试使用$ slice,没有任何成功(参数错误)。

请注意,我试图获取“最后一个元素的网址”而不是“最后一个元素”

寻找解决方案。

2 个答案:

答案 0 :(得分:1)

You can use map() to filter the response :

.find({}, { _id: 0, name: 0, details: 0, images: { $slice: -1 } }).map( function(u) { return u.images[0].url; } );

答案 1 :(得分:1)

我意识到$ slice不适合我的原因是我的mongodb是版本2.6.6 我将我的mongodb更新到版本3.0.4,它的工作原理如下:

.find({},{"images.url":1,"images.url":{$slice:-1}})

感谢您到目前为止的所有评论。