mongodb - Mongoose {$exists: false} 不工作,为什么?
问题描述
我有以下查询:
const messageRules = await MessageRule.findOne({
reservationLength: {$exists: false}
});
在以下架构上:
const MessageRule = new Schema(
{
...,
reservationLength: {type: Number, default: 1},
...
}
);
查询返回一个文档:
{
...,
reservationLength: 1,
...
}
我要疯了。它与我的架构中的默认设置有关吗?还有其他想法吗?
解决方案
这是我已经多次遇到过 mongoose 的错误,但我没有找到太多关于它的信息(当然,我决定不浪费时间探索它)。
它发生在所有默认值的字段中,猫鼬只是在返回调用时自动将这些值设置为其默认值(如果您检查数据库中的实际文档,它将不会设置此字段)。
一种缓解紧张情绪的简单方法是在调用中添加lean():
const messageRules = await MessageRule.findOne({
reservationLength: {$exists: false}
}).lean();
出于某种原因,这最终修复了错误(有争议的功能???)
推荐阅读
- wpf - WPF 访问另一个对象
- java - 使用 java 8 并行处理图像
- python - VSC - Python - 错误的识别级别
- r - 从 R 中的 n 长度向量和 m 长度向量生成 nxm 矩阵
- java - Spring Boot 更新用户数据的最佳方法是什么?
- vba - 如何在 VBA 中循环查找对话框
- reactjs - 组件即使在状态突变 redux 下也能工作
- javascript - 解析 json 数组并遍历 Pivot.js 的所有数据
- php - 在 MySQL 中添加用户的多个收藏夹
- python - 为 Raspberry Pi 使用 Google 的语音到文本 API