我在一个web应用程序的前端有过滤器,其中大多数是多选择过滤器。
我正在尝试编写一个mongo聚合查询,它处理两种场景。
查询应该如下所示。显然,下面的查询不起作用。
db.hospitals.aggregate([
{
$match: {
hosp_name: {
$cond: {
if: {
$in: [""]
}, then: "*", else: $in: ["ABC Hospital", "DEF Hospitals"] }
}
}
}
},
{
$group: {
_id: {
"IP/OP": "$ip_op"
}
}
}
])在这里,在条件块中,我试图表达以下意思:
如果用户不选择医院名称中的任何值
如何正确构造此查询?
编辑:
我也尝试过$or条件。虽然它是有效的,但它显示的是没有选择的情况下的空结果。结果不符合我的设想。我知道我错过了什么。
db.hospital_baseline.aggregate([
{
$match: {
$or: [{hospital_name: {$in: [""]}}, {hospital_name: {$in: ["ABC Hospital"]}}]
}
},
{
$group: {
_id: {
"Manufacturer Name": "$manufacturer_name"
}
}
}
])发布于 2021-08-31 06:49:27
我认为您需要在代码中以编程方式构建查询,首先检查select数组:
如果
https://stackoverflow.com/questions/68992327
复制相似问题