mongodb - 我可以使用聚合框架轻松地将子文档的所有字段作为顶级文档中的字段返回吗?

标签 mongodb mongodb-query

我有一个类似下面的文档,我想从中返回当前顶级字段的子字段作为结果数组的每个文档中的顶级字段:

{ 
  field1: {
    subfield1: {},
    subfield2: [],
    subfield3: 44,
    subfield5: xyz
  },
  field2: {
    othercontent: {}
  }
}

我希望我的聚合查询的结果返回以下内容(field1 的内容作为顶级文档):

{
  subfield1: {},
  subfield2: [],
  subfield3: 44,
  subfield5: xyz
}

这可以通过 $project 和聚合框架来完成,而无需将每个子字段都定义为顶级字段返回吗?

最佳答案

您可以使用 $replaceRoot从 3.4 开始的聚合运算符:

db.getCollection('sample').aggregate([
    {
        $replaceRoot: {newRoot: "$field1"}
    }
])

按预期提供输出:

{
    "subfield" : {},
    "subfield2" : [],
    "subfield3" : 44,
    "subfield5" : "xyz"
}

关于mongodb - 我可以使用聚合框架轻松地将子文档的所有字段作为顶级文档中的字段返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436510/

相关文章:

mongodb - Mongo $subtract date 在聚合 $match block 中不起作用

Javascript/Node.js "Function name"不是一个函数

mongodb 使用共享 session 变量从我的函数中插入

node.js - 使用 node/express 显示 BASE64 视频

node.js - Mongoose 中的 friend 模式建模?

node.js - 没有$ unwind的$ lookup多个级别?

MongoDB嵌套对象聚合计数

javascript - 我的 Node 脚本在函数完成后挂起

java - Mongo java 驱动程序 collection.count() 总是返回一个额外的值

javascript - 如何从 ref 对象插入项目