首页 > 解决方案 > 检查字段是否存在,然后与 Mongoose 中的值进行比较

问题描述

刚试过 MongoDB 和 Mongoose,所以我有点迷茫。如何检查字段是否存在,如果存在,请根据值检查它?这就是我到目前为止所得到的。它的查询方式与现有查询方式相同。

顺便说一句,查询的目标是提取所有未标记为 isDeleted true 的记录,并且应该支持在 isDeleted 实现之前创建时没有 isDeleted 字段的预先存在的记录。

通过以下查询,我收到此错误:

对于模型的路径“isDeleted”处的值“[ { '$exists': false }, { '$ne': true } ]”,转换为布尔值失败...

query.isDeleted = {
        $or: [
          { $exists: false },
          { $ne: true }
        ]
      };

return this.find(query)
      .exec();

标签: mongodbmongoose

解决方案


由于错误表明您的 $or 位置错误,您可以这样做

query.$or = [
          {isDeleted: { $exists: false }},
          {isDeleted: { $ne: true }}
        ];

return this.find(query)
      .exec();

MongoDB $或参考

在您的情况下isDeleted: Boolean,但是您正在根据 Object 检查它,这{$or: []}就是您收到类型错误的原因。


推荐阅读