4

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

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

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

这将导致以下结果:

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

有没有办法给结果取别名?类似于 mysqlAS关键字在查询中允许的内容?

4

2 回答 2

0

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

如果您首先有此要求,您必须想知道您的架构。您确定没有更优雅的方法可以通过相应地更改架构来使其工作吗?

于 2012-04-16T08:09:48.190 回答
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 ] }
    } }
])
于 2021-06-30T13:21:49.673 回答