我有一个相当大的 MongoDB 文档,其中包含各种数据。我需要识别集合中数组类型的字段,以便我可以从我将填充的网格中显示的字段中删除它们。
我的方法现在包括检索集合中的所有字段名称
这取自此处发布的响应MongoDB Get names of all keys in collection
mr = db.runCommand({
"mapreduce" : "Product",
"map" : function() {
for (var key in this) { emit(key, null); }
},
"reduce" : function(key, stuff) { return null; },
"out": "things" + "_keys"
})
db[mr.result].distinct("_id")
并为每个字段运行一个像这样的查询
db.Product.find( { $where : "Array.isArray(this.Orders)" } ).count()
如果检索到任何内容,则该字段被视为一个数组。
我不喜欢我需要运行 n+2 个查询(n 是我的集合中不同字段的数量)并且我不想对模型中的字段进行硬编码。它会破坏使用 MongoDB 的全部目的。
有没有更好的方法来做到这一点?