$ MongEDB版本3.2中的arrayElemAt。
db.users.aggregate([
{
$project:
{
name: 1,
first: { $arrayElemAt: [ "$favorites", 0 ] },
last: { $arrayElemAt: [ "$favorites", -1 ] }
}
}
])
答案 0 :(得分:3)
您现在可以将$arrayElemAt
与ArrayOperators.ArrayElemAt class结合使用。
对于Spring Data Mongo,上面的MongoDB投影将像以下这样进行:
project("name")
.and(ArrayOperators.ArrayElemAt.arrayOf("favorites").elementAt(0)).as("first")
.and(ArrayOperators.ArrayElemAt.arrayOf("favorites").elementAt(-1)).as("last")
答案 1 :(得分:2)
DATAMONGO-1536即将为Ingalls版本的Spring Data MongoDB添加$arrayElemAt
和其他缺少的聚合运算符。同时,您可以提供自己的AggregationExpression
来创建所需的任何操作。
对于上面这样的事情,诀窍是:
project("name") //
.and(context -> new BasicDBObject("$arrayElemAt", asList("$favorites", 0))).as("first")
.and(context -> new BasicDBObject("$arrayElemAt", asList("$favorites", -1))).as("last");
答案 2 :(得分:0)
更加简洁,您甚至可以如下使用$arrayElementAt
:
project("name")
.and("favorites").arrayElementAt(0).as("first")
.and("favorites").arrayElementAt(-1).as("last")