我想使用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,
},
},
]
}
}
我知道我可以简单地在$search
之后将$match
阶段添加到聚合管道中,但Atlas文档说这对性能不好,所以我想将其包含在$search
的过滤器中。
我该如何添加一个";OR";子句是否还包括$search
阶段中publish_start_date
为undefined
的文档?
对于所有没有开始日期的文档,在日期中写入占位符值,例如0000-00-00。如果缺少日期对您的应用程序有意义,请将数据+占位符复制到一个新字段中。