如何获取集合中的所有键+ mongodb + mongoose

时间:2018-08-01 06:01:54

标签: node.js mongodb

我想从mongoDB的集合中获取所有不同的键。 我引用了以下链接:

Get names of all keys in the collection

Querying for a list of all distinct fields in MongoDB collection

但是我仍然没有得到正确的解决方案...

因为我在第一个链接参考中使用猫鼬,所以yas runCommand不是函数。

由于findOne()仅提供第一个文档密钥,但是我需要所有不同的密钥

userModel.findOne(condition, projection, callback) 

请分享您的想法。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Mongoose 3.x,则可以尝试以下方法:

userModel.find().distinct('_id', function(error, ids) {
    // ids is an array of all ObjectIds
});

或者您可以找到所有文档并从中提取密钥,例如:

var keys = {};
var docKeys = [];
userModel.find({}, function(err, allDocs){
    allDocs.forEach(function(doc){
        docKeys = Object.keys(doc);
        docKeys.forEach(function(docKey){
               if(!keys[docKey]) keys[docKey] = true;
        })
    })     
})

我刚刚写的是为了获取逻辑,您可以根据自己的要求和效率进行更改

答案 1 :(得分:0)

像这样尝试,您将把所有键定义到猫鼬模型/架构中。

import Model from 'your_model_path'

for(let property in Model.schema.obj){
  console.log("key=====>",property);
}