Node.js Mongoose:通过传递变量查找

Node.js Mongoose:通过传递变量查找,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我想通过传递变量来查找。我有这样的数据 { "projectId": "12345-service-request", "projectVersion": [{ "version":"1", "localConfig": [{ "port": "3003", "mongoURI": "mongodb://localhost:27017/serviceRequest", "MQ": "RMQ", "logLevel": "2"

我想通过传递变量来查找。我有这样的数据

{
  "projectId": "12345-service-request",
  "projectVersion": [{
    "version":"1",
    "localConfig": [{
      "port": "3003",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "RMQ",
      "logLevel": "2",
      "version": "1.1",
      "created": "03-06-2018 03:11:00 PM",
      "active": "N"
    },
    {
      "port": "3004",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "IMQ",
      "logLevel": "1",
      "version": "1.2",
      "created": "07-06-2018 03:11:00 PM",
      "active": "Y"
    }]    
  }]
}
{
    "projectId" : "32804-service-request-service",
    "env" : "local"
    "cloudParam" : {
        "MQ" : "RMQ",
        "logLevel" : "2",
        "active": "N"   
    }
}
在请求中,我得到了这样的数据

{
  "projectId": "12345-service-request",
  "projectVersion": [{
    "version":"1",
    "localConfig": [{
      "port": "3003",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "RMQ",
      "logLevel": "2",
      "version": "1.1",
      "created": "03-06-2018 03:11:00 PM",
      "active": "N"
    },
    {
      "port": "3004",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "IMQ",
      "logLevel": "1",
      "version": "1.2",
      "created": "07-06-2018 03:11:00 PM",
      "active": "Y"
    }]    
  }]
}
{
    "projectId" : "32804-service-request-service",
    "env" : "local"
    "cloudParam" : {
        "MQ" : "RMQ",
        "logLevel" : "2",
        "active": "N"   
    }
}
因此,我正在请求中更改
cloudParam
的键

let dbQry = renameKeys(cloudParam, function(key, val) {
        return "projectVersion.localConfig."+ key;
    });

    console.log(dbQry);

    // Output : { 'projectVersion.localConfig.MQ' : 'RMQ', 'projectVersion.localConfig.logLevel': '2' , 'projectVersion.localConfig.active': 'N' }
现在,我想在Find查询中传递dbQry和projectd。 我像下面一样经过,但它什么也没回来

ProjectConfig.find({'projectId' : projectId,dbQry}).exec(function(err,pc){         
    console.log("## DB Result : "+pc);
});
那么,在Mongoose的Find方法中如何传递变量呢

编辑-- 预期产出:

{
      "port": "3003",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "RMQ",
      "logLevel": "2",
      "version": "1.1",
      "created": "03-06-2018 03:11:00 PM",
      "active": "N"
    }
注: 若我得到完整的文档作为输出,那个么也没关系,但如何在find查询中传递参数

试试下面的方法

ProjectConfig.findOne({ 'projectId': projectId }).exec(function (err, pc) {
let version = "1.1"; //your version
let MQ = "RMQ";//your mq
let versionData = {};
mydate.projectVersion.forEach(item => {
  let match = item.localConfig.find(ele=> (ele.version == version && ele.MQ == MQ ));
  versionData = (match != null) ? match : {}
});
    console.log(versionData);
});
控制台日志结果

{
      "port": "3003",
      "mongoURI": "mongodb://localhost:27017/serviceRequest",
      "MQ": "RMQ",
      "logLevel": "2",
      "version": "1.1",
      "created": "03-06-2018 03:11:00 PM",
      "active": "N"
    }
工作示例链接


请更新您的预期output@RatanUdayKumar请检查预期输出。我已经更新了我的答案。如果版本存在,您将得到其他方面的结果。{}如果我想通过两个条件来确定,比如版本和MQ,那么需要更改什么?如果您喜欢我的努力,请批准我的答案