mongo
集合中的一些参数定义了深层对象。
例如(我现在的情况)。如果我按id
db.collection.aggregate([{$match: {id: '1234567'}}])
所以我的queryObj
在Node服务端看起来像这样:
let queryObj = { $match: { id: customerId } };
但现在我需要考虑另一个参数providerID
aggregate
这是它在Mongo查询中的样子(运行正常):
db.getCollection('mydb').aggregate([{$match:{id:'31250044805', 'value.transactionDetail.medicalClaim.claimHeader.value.provider.providerNumber.providerID':'42344'}}])
如何在我的Node.js服务电话中构建我的queryObj
?
我试过这样的事情:
if(providerId) {
queryObj['$match]'['value']['transactionDetail']['medicalClaim']['claimHeader']['value']['provider']['providerNumber']['providerID'] = providerID;
}
我也尝试过:
if(providerId) {
queryObj.$match.value.transactionDetail.medicalClaim.claimHeader.value.provider.providerNumber.providerID = providerID;
}
但它失败了,因为我在链中的undefined
值上引用了params。
有什么建议吗?
答案 0 :(得分:0)
您可以使用Object.assign
向对象添加道具。
let queryObj = { $match: { id: customerId } };
if(providerId) {
Object.assign(queryObj.$match, {'value.transactionDetail.medicalClaim.claimHeader.value.provider.providerNumber.providerID': '1234'});
}
或者,只需使用括号表示法:
queryObj.$match['value.transactionDetail.medicalClaim.claimHeader.value.provider.providerNumber.providerID'] = '1234';