获取MongoDB中数组的第一个和最后一个元素

时间:2012-04-16 02:59:36

标签: mongodb

Mongo DB:我正在寻找一个查询来返回数组的第一个和最后一个元素。我意识到我可以做多个查询,但我真的想用一个查询。

假设一个集合“test”,其中每个对象都有一个数字“arr”数组:

 db.test.find({},{arr:{$slice: -1},arr:{$slice: 1}});

这将产生以下结果:

 { "_id" : ObjectId("xxx"), "arr" : [ 1 ] }    <-- 1 is the first element

有没有办法对结果进行别名?类似于mysql AS关键字在查询中允许的内容?

2 个答案:

答案 0 :(得分:0)

目前这是不可能的,但如果我正确理解您的功能需求,那么现在正在开发的聚合框架。

如果你有这个要求,你必须想知道你的架构。您是否确定没有更优雅的方法可以通过相应地更改架构来实现这一点?

答案 1 :(得分:0)

这可以通过使用运算符 $first$last 的聚合框架完成,如下所示:

db.test.aggregate([
    { '$addFields': {
        'firstElem': { '$first': '$arr' },
        'lastElem': { '$last': '$arr' }
    } }
])

或使用 $slice 作为

db.test.aggregate([
    { '$addFields': {
        'firstElem': { '$slice': [ '$arr', 1 ] },
        'lastElem': { '$slice': [ '$arr', -1 ] }
    } }
])