我需要从我的集合中获取所有字段名称,包括子文档中的字段。我目前正在运行此命令并仅获取根字段的名称。如何获取所有字段名称?
我的收藏是这样的:
"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 文件