我正在寻找一种方法来检索 MongoDB 集合中所有可能的字段,因为在所有文档中,并非每个文档都具有相同的字段,以便为我的任务中的所有可能情况做好准备就在眼前。
我找到了 this useful question/answer能够检索所有字段。答案很有用,但正如那里的评论所述,也可以获取所有嵌套的字段名称吗?仅此问题就需要另一个问题,因此我想知道该怎么做。
我的意思是:
total: 15861
ref_code: "0FMjZj"
settings: Object
pa_rejected: "1"
pa_redeem: "1"
new: "1"
在这个简化的示例中,使用 Mongo CLI 和引用答案中共享的解决方案,我得到:
[
"total",
"ref_code",
"settings"
]
有没有办法同时以某种方式获得 pa_rejected
、pa_redeem
和 new
?
最佳答案
将 map 函数递归地应用于文档:
db['foo'].deleteMany({})
db['foo'].insert({a:{foo:{bar:{zoom:42}}},b:'c',d:'e',x:[]})
mr = db.runCommand({
"mapreduce" : "foo",
"map" : function() {
var f = function() {
for (var key in this) {
if (this.hasOwnProperty(key)) {
emit(key, null)
if (typeof this[key] == 'object') {
f.call(this[key])
}
}
}
}
f.call(this);
},
"reduce" : function(key, stuff) { return null; },
"out": "myCollectionName" + "_keys"
})
print(db[mr.result].distinct("_id"))
关于arrays - 如何使用 mongo shell 获取 MongoDB 集合中的所有字段名称,包括嵌套字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63004970/