我使用的是Mongoose聚合(MongoDB 3.2版).

我有一个字段users,它是一个array.我想将这个数组中的第一项$project转移到一个新字段user.

我试过了

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

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

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

但两者都不起作用.

我怎样才能正确地做呢?谢谢

推荐答案

Update:

从v4开始.4有一个专用的操作员$first:

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

这是一种语法糖

Original answer:

你可以使用arrayElemAt:

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

Mongodb相关问答推荐

在MondoDB中:将对象数组从切片索引数组切片,并通过聚合推入数组

Kotlin 使用初级构造实例化公开类

在我的查询中使用 populate() 时的 MongoDB createIndex()

如何在 2 个应用程序之间共享mongoose模型?

当属性确实存在时,为什么mongoose模型的 hasOwnProperty 返回 false?

解析命令行时出错:unrecognized option --rest

是否可以迭代 mongo 游标两次?

GeoJSON 和 MongoDB:将点存储为 GeoJSON.Point 是否值得?

Mongodb将重音字符匹配为基础字符

mongodump 是否锁定数据库?

我怎样才能更快地scrape

Mongoose 与 mongodb 如何返回刚刚保存的对象?

MongoDB展开多个数组

从 id 删除 PyMongo 中的文档

如何使用服务器实例指定 mongodb 用户名和密码?

MongoDB 和 Robomongo: Can't connect (authentication)

MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何 Select ?

验证 MongoCredential 的异常和未分类的 Mongo Db 异常

MongoDb - 利用多 CPU 服务器进行写入繁重的应用程序

全局初始化失败:BadValue Invalid or no user locale set.请确保正确设置 LANG 和/或 LC_* 环境变量