假设我有一些mongo数据库查询,它返回以下两个文档。 (我正在使用聚合和放大,它返回给我这个结果集)。
s.next().toLowerCase().equals("y")
我的数据库架构较少&我正在存储属性和值。有多个属性代表相同的信息。对于例如在这里“名字”& “employeename”代表同样的事情。我想要一些常见属性的最终输出(比如“员工姓名”)。此公共属性可以具有“name”或“employeename”的值。
我认为这个问题可以通过在聚合中添加一个管道来解决。我试过$或(它返回true / false而不是值)
{
"name" : {
"value" : "ANDERSON"
},
"ID" : {
"value" : "2356"
},
}
{
"employeename" : {
"value" : "DAVID"
},
"ID" : {
"value" : "2356"
},
}
最终输出应为
db.getCollection('mycollection').aggregate([
{ "$project" : {
"name" : 1,
"ID" : 1, "employeename" : 1
}},
{ "$project":{
"Employee Name": {$or : ["$name", "$employeename"]}
}}
])
有人可以告诉我如何编写这个mongo DB命令吗?
答案 0 :(得分:2)
您想要的是$ifNull
运算符,您还可以将管道缩短到一个$project
阶段。
db.getCollection('mycollection').aggregate([
{ "$project" : {
"EmployeeName" : { "$ifNull": [ "$name", "$employeename" ] },
"ID" : 1,
}}
])