如何在Spring Data MongoDB中使用$ arrayElemAt运算符

时间:2016-12-01 11:19:13

标签: spring-data-mongodb

$ MongEDB版本3.2中的arrayElemAt。

db.users.aggregate([
{
 $project:
  {
     name: 1,
     first: { $arrayElemAt: [ "$favorites", 0 ] },
     last: { $arrayElemAt: [ "$favorites", -1 ] }
  }
}

])

3 个答案:

答案 0 :(得分:3)

您现在可以将$arrayElemAtArrayOperators.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")