我有一个集合,其中一些文档具有InstallDate
字段,而有些则没有。但是,所有文档都将带有LastPublishedDate
。
如果该字段存在,我需要通过InstallDate
查询此集合。如果它不存在,那么我需要通过LastPublishedDate
来查询它。
这是我尝试的方法,但是$cond
不能用作顶级运算符。
Patch.countDocuments({
$and: [
{OrgId: orgId},
{
$cond: {
if: {
InstallDate: { $exists: true }
},
then: {
InstallDate: { $gt: startTime, $lt: endTime }
},
else: {
LastPublishedDate: { $gt: startTime, $lt: endTime }
}
}
}
],
})
答案 0 :(得分:1)
您可以查询InstallDate
在正确范围内,或者InstallDate
不存在且LastPublishedDate
在正确范围内的文档。
Patch.countDocuments({
OrgId: orgId,
$or: [
{InstallDate: { $gt: startTime, $lt: endTime }},
{InstallDate: { $exists: false }, LastPublishedDate: { $gt: startTime, $lt: endTime }}
]
})