MongoDB 具有 OR 条件的图集搜索过滤器范围

MongoDB Atlas search filter range with an OR criteria

我想使用 MongoDB Atlas Search 对某个日期进行范围搜索,但我还需要包含根本没有日期的搜索结果。这就是我在聚合管道的 $match 阶段执行此操作的方式:

$match: {
    $or: [
        {
            publish_start_date: {
                $lte: todayDateTime,
            },
        },
        {
            publish_start_date: undefined,
        },
    ],
}

这里相当于图集的第一部分$search

$search: {
    index: "iapp-component-search",
    compound: {
        filter: [
            {
                range: {
                    path: "publish_start_date",
                    lte: todayDateTime,
                },
            },
        ]
    }
}

我知道我可以简单地将 $match 阶段添加到 $search 之后的聚合管道,但是 Atlas 文档说这对性能不利,所以我想将它包含在$search.

的过滤器

如何添加“OR”子句以在 $search 阶段也包含 publish_start_dateundefined 的文档?

对于所有没有开始日期的文档,将占位符值写入日期,例如0000-00-00。如果缺少的日期对您的应用程序有意义,请将数据 + 占位符复制到新字段中。