Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何获取所有密钥+;在集合中+;mongodb+;猫鼬_Node.js_Mongodb - Fatal编程技术网

Node.js 如何获取所有密钥+;在集合中+;mongodb+;猫鼬

Node.js 如何获取所有密钥+;在集合中+;mongodb+;猫鼬,node.js,mongodb,Node.js,Mongodb,我想从mongoDB中的集合中获取所有不同的密钥。 我参考了以下链接: 等等 但我仍然没有得到正确的解决方案 因为我在第一个链接引用中使用了mongoose,所以syas runCommand不是一个函数 AsfindOne()将单独提供第一个文档键,但我需要所有distnct键 userModel.findOne(condition, projection, callback) 请分享您的想法。如果您使用的是Mongoose 3.x,那么您可以尝试以下方法: userModel.find

我想从mongoDB中的集合中获取所有不同的密钥。 我参考了以下链接:

等等

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

因为我在第一个链接引用中使用了mongoose,所以syas runCommand不是一个函数

As
findOne()
将单独提供第一个文档键,但我需要所有distnct键

userModel.findOne(condition, projection, callback) 

请分享您的想法。

如果您使用的是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;
        })
    })     
})

我刚刚为获取逻辑而写,您可以根据您的需求和效率进行更改

这样尝试,您将在mongoose模型/模式中定义所有密钥

import Model from 'your_model_path'

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

它提供了
\u id的数组
,但我需要
我已经更新了代码,请检查它是否解决了您的问题。我已经实现了您的2个想法。但是性能呢??考虑它是否有1个Lakh度假村??可以使用schema和放在文档键上的限制。因此,您将确保文档只包含这些键,并且您可以使用:UserModel.schema.pathsThats i cant restrict.获取架构键。。用户可以上传任何数据密钥意味着您在mongoose中声明的
型号
?我的意思是,假设你有一个名为Book的模型,它是
{id,Book\u name,publisher}
等等,你想要它们吗?@Osman Goni Nahid是的,你是对的检查我的答案。@Anthony Winzlet这不是一个特定的字段。我必须得到所有文档中的所有密钥..在这里尝试答案我的模式是不固定的,用户可以上传任何数据,因此我们无法预测密钥,然后你必须做很长的事情不同的文档可能不同,合并文档和查找密钥的成本太高..是的,有任何优化的解决方案吗??