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,那么需要更改什么?如果您喜欢我的努力,请批准我的答案