mongodb - 将数组中的第一项投影到新字段(MongoDB 聚合)

标签 mongodb mongoose aggregation-framework

我正在使用 Mongoose 聚合(MongoDB 3.2 版)。

我有一个字段 users 这是一个数组。我想 $project 将此数组中的第一项添加到新字段 user

我试过了

  { $project: {
    user: '$users[0]',
    otherField: 1
  }},

  { $project: {
    user: '$users.0',
    otherField: 1
  }},

  { $project: {
    user: { $first: '$users'},
    otherField: 1
  }},

但两者都不起作用。

我怎样才能正确地做到这一点?谢谢

最佳答案

更新:

从 v4.4 开始,有一个专门的运算符 $first :

{ $project: {
    user: { $first: "$users" },
    otherField: 1
}},

这是语法糖

原答案:

您可以使用 arrayElemAt :

{ $project: {
    user: { $arrayElemAt: [ "$users", 0 ] },
    otherField: 1
}},

关于mongodb - 将数组中的第一项投影到新字段(MongoDB 聚合),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196537/

相关文章:

python - MongoAlchemy 中的数组定义建模

MongoDB - 如何更改嵌套在子文档中的数组中找到的字符串的类型

javascript - Node + Express + Passport + Mongoose : req. 用户未定义

javascript - mongodb - 展开嵌套子文档

mongodb - 聚合过去 7 天的 mongo 记录时出现问题

mongodb - 在 mongodb 聚合框架中组合多个 match() 结果

javascript - 如何在 mongodb 中存储 new Date().getTime() ?

node.js - Node mongoose 解析 request.body 中的 JSON 负载

node.js - Mongoose 从多个可能的集合中填充 ObjectID

mongodb - 如何对 MongoDB 中每个唯一值进行分组并获取具有最大日期的文档