如果字段不存在,请按其他字段查询

时间:2019-04-05 15:37:19

标签: mongodb mongoose

我有一个集合,其中一些文档具有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 }
                }
            }
        }
    ],
})

1 个答案:

答案 0 :(得分:1)

您可以查询InstallDate在正确范围内,或者InstallDate不存在且LastPublishedDate在正确范围内的文档。

Patch.countDocuments({
  OrgId: orgId,
  $or: [
    {InstallDate: { $gt: startTime, $lt: endTime }},
    {InstallDate: { $exists: false }, LastPublishedDate: { $gt: startTime, $lt: endTime }}
  ]
})