猫鼬:只返回文档中的键

qts*_*qts 1 mongoose mongodb node.js

我有一个文件如下:

var data={"john:"friend",
          "fruit":"banana",
           "tv":[{"livingroom":"led",
                   "bedroom":"lcd"
                   "fruit":"banana"}]}
Run Code Online (Sandbox Code Playgroud)

我试图返回一个包含所有唯一键的数组,如下所示:

["john","fruit,livingroom,bedroom]
Run Code Online (Sandbox Code Playgroud)

所以我有以下代码:

var mykeys=[];
database.find({},function(result){
    result.forEach(function(each){
         for (key in each){
             mykeys.push(key)
         };
    }});
Run Code Online (Sandbox Code Playgroud)

但这会返回一大堆我不需要的对象,例如:

[$__, isNew, errors, _doc, $__original_save, save, _pres, _posts....]
Run Code Online (Sandbox Code Playgroud)

无论如何我可以摆脱文档中没有的这些键吗?我知道这里的mapreduce答案MongoDB get the names of all the keys in a MongoDB collection但我不知道如何将它翻译成猫鼬。AFAIK 猫鼬不支持 runCommand。

str*_*str 6

您必须使用该_doc属性,因为它包含您的实际文档。此外,您可以仅使用Object.keys来获取属性列表。

var mykeys;
database.findOne({}, function(result) {
    mykeys = Object.keys(result._doc);
});
Run Code Online (Sandbox Code Playgroud)