javascript - 获取集合和子文档中所有键的名称

我需要从我的集合中获取所有字段名称,包括子文档中的字段。我目前正在运行此命令并仅获取根字段的名称。如何获取所有字段名称?

我的收藏是这样的:

"UserId" : 11111,
"Personal" : {
    "Email" : "email@gmail.com",
    "FirstName" : "Name",
    "LastName" : "Last"
},
"Car" : {
    "CarType" : "NULL"
}

这是命令

var mr = db.runCommand({
"mapreduce" : "myCollection",
  "map" : function() {
    for (var key in this) { emit(key, null); }
  },
  "reduce" : function(key, stuff) { return null; }, 
  "out": "myCollection" + "_keys"
})

db[mr.result].distinct("_id")

我想要这个结果:

UserId、Personal.Email、Personal.FirstName、Personal.LastName、Car.CarType

最佳答案

在纯 Javascript 中,您可以通过查看对象、它们的键和嵌套对象来采用迭代和递归的方法。

function getKeys(object) {
    if (!object || typeof object !== 'object') {
        return [];
    }
    if (Array.isArray(object)) {
        return object.reduce((r, o) => [...r, ...getKeys(o)], []);
    }
    return Object.keys(object).reduce((r, k) => [...r, k, ...getKeys(object[k])], []);
}

var object = { UserId: 11111, Personal: { Email: "email@gmail.com",  FirstName: "Name", LastName: "Last" }, Car: { CarType: "NULL" }, array: [{ foo: '', bar: '' }, { foo: '', bar: '' }] };

console.log(getKeys(object));

https://stackoverflow.com/questions/54652283/

相关文章:

mongodb - 要将一条记录与 MongoDB 中的另一条记录相关联,可以使用 slug 吗?

c# - ReadBsonType 只能在 State 为 Type 时调用,不能在 State 为

node.js - 我应该使用什么数据类型来使用 MongoDB 存储图像?

java - Mongo 将 Document 转换为 DBObject

mongodb - 使用 mongodb 聚合的多个字段的不同计数

java - Spring MongoTemplate - 将聚合结果映射到集合(例如 List 和

node.js - 使用 winston-mongodb 和 express-winston 进行日

json - 使用 Python 从 MongoDB 文档创建 JSON 文件

javascript - UnhandledPromiseRejectionWarning 错误 :

node.js - 如何在没有回调的情况下返回 Mongoose 查询结果