首页 > 解决方案 > mongodb $or 总是返回 false (const)

问题描述

我创建了一个聚合管道来检索文档并添加一个新字段“过期”(布尔值),它的值基于字段“expireAt”(日期)

过期字段在以下情况下被认为是真的:

这是我的审判:

{project:
expired: {
          $not: {
            $or: [{ expireAt: null }, { $gte: ['$expireAt', new Date()] }]
          }
        }
}

即使文档的 expireAt 值现在为 < 现在,此代码也总是给我 false

通过执行解释:

{ '$project': { _id: true, expireAt: true, expired: { '$cons
    t': false } } }

查询结果:

也 {expireAt:{$exists:false}} 给出错误:MongoError: Unrecognized expression '$exists'at queryCallback

检查该字段是否存在的任何想法(无论其值为 null 与否)

标签: mongodbmongoosemongodb-queryaggregation-framework

解决方案


以下代码对我有用:

expired:{
$and: ['$expireAt', { $lt: ['$expireAt', new Date()] }]
}

推荐阅读