Javascript NodeJS和MongoDB中基于条件的查询外部访问变量
我有如下模式:Javascript NodeJS和MongoDB中基于条件的查询外部访问变量,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有如下模式: [ { "_id": 1, "showResult": true, "subject": "History", }, { "_id": 2, "showResult": false, "subject": "Math", } ] result = { &q
[
{
"_id": 1,
"showResult": true,
"subject": "History",
},
{
"_id": 2,
"showResult": false,
"subject": "Math",
}
]
result = {
"History": 22,
"Math": 18
}
{
_id: 1,
score: 22
}
JS中的一个对象如下所示:
[
{
"_id": 1,
"showResult": true,
"subject": "History",
},
{
"_id": 2,
"showResult": false,
"subject": "Math",
}
]
result = {
"History": 22,
"Math": 18
}
{
_id: 1,
score: 22
}
我正在使用聚合来处理查询,在此期间,如果showResult
字段为true
,我需要根据文档中的subject
字段查找分数,即访问result
变量作为mapresult[$subject]
我的问题是:
db.collection.aggregate([
{
"$project": {
_id: 1,
"score":{$cond: { if: { $eq: [ "$showResult", true ] }, then: subjectObj[$subject], else: null }}
}
}
])
这可以在MongoDB中完成吗,我希望得到如下结果:
[
{
"_id": 1,
"showResult": true,
"subject": "History",
},
{
"_id": 2,
"showResult": false,
"subject": "Math",
}
]
result = {
"History": 22,
"Math": 18
}
{
_id: 1,
score: 22
}
我认为查询比JS代码花费少,但我正在添加查询,如果它能帮助您解决您的问题
$match
为真showResult
要显示必填字段,$project
要在使用$reduce
从对象转换到数组后迭代结果循环,请检查主题匹配的条件,然后返回匹配分数$objectToArray
我的下一个聚合管道取决于此部分的结果