svs*_*eja 1 mongodb mongodb-query aggregation-framework
这些是我收藏的文件
{ "_id" : 1, "quizzes" : [ 10, 6, 7 ], "labs" : [ 5, 8 ], "final" : 80, "midterm" : 75 ,"extraMarks":10}
{ "_id" : 2, "quizzes" : [ 9, 10 ], "labs" : [ 8, 8 ], "final" : 95, "midterm" : 80 }
{ "_id" : 3, "quizzes" : [ 4, 5, 5 ], "labs" : [ 6, 5 ], "final" : 78, "midterm" : 70 }
Run Code Online (Sandbox Code Playgroud)
只有文档1有一个字段额外标记:
现在我必须作为"最终"+"中期"+"额外标记"的总和进行投影
我写了一个投影查询如下:
db.students.aggregate([ { $project: { examTotal: { $add: [ "$final", "$midterm","$extraMarks" ] } } } ])
Run Code Online (Sandbox Code Playgroud)
此查询为Document1以及Doc2和Doc3提供了正确的结果,因为该字段不存在,其给出的总和为null.
是否可以检查该字段是否为空并添加查询本身..有什么建议吗?
在查询Mongo DB中是否有类似于nvl(在SQL中)的功能?
你可以做两个投影,第一个使用$ ifNull,类似于nvl:
db.students.aggregate([
{ $project: { final: 1, midterm: 1, extraMarks: { $ifNull: [ "$extraMarks", 0 ] } } },
{ $project: { examTotal: { $add: [ "$final", "$midterm","$extraMarks" ] } } }
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |