mongodb - 检查字段是否存在,然后与 Mongoose 中的值进行比较
问题描述
刚试过 MongoDB 和 Mongoose,所以我有点迷茫。如何检查字段是否存在,如果存在,请根据值检查它?这就是我到目前为止所得到的。它的查询方式与现有查询方式相同。
顺便说一句,查询的目标是提取所有未标记为 isDeleted true 的记录,并且应该支持在 isDeleted 实现之前创建时没有 isDeleted 字段的预先存在的记录。
通过以下查询,我收到此错误:
对于模型的路径“isDeleted”处的值“[ { '$exists': false }, { '$ne': true } ]”,转换为布尔值失败...
query.isDeleted = {
$or: [
{ $exists: false },
{ $ne: true }
]
};
return this.find(query)
.exec();
解决方案
由于错误表明您的 $or 位置错误,您可以这样做
query.$or = [
{isDeleted: { $exists: false }},
{isDeleted: { $ne: true }}
];
return this.find(query)
.exec();
在您的情况下isDeleted: Boolean
,但是您正在根据 Object 检查它,这{$or: []}
就是您收到类型错误的原因。
推荐阅读
- spring-boot - 如何关闭/停止 Spring Cloud 流绑定的 RabbitMQ 队列
- c - 为什么将 while() 中的 printf() 作为条件打印不同的输出
- java - 在 Visual Studio Code 中部署 Azure Function 不包含 .jar 文件
- python - 已安装 matplotlib - ModuleNotFoundError:没有名为“matplotlib”的模块
- fortran - Fortran 直接访问
- nginx - DNS_PROBE_FINISHED_NXDOMAIN - 网站即将上线
- docker - 没有使用 Ansible 重新启动多个 Docker 容器
- javascript - 如何从赛普拉斯的 beforeEach 中删除所有 cy.route
- xamarin.android - 从所选项目中获取价值
- android - Android GridLayout 基于行宽的不同跨度计数