首页 > 解决方案 > 如何修复我的猫鼬查询随机无法找到未更改的文档?

问题描述

我的猫鼬(5.5.15)查询有时能够“findById”文档并根据提供的条件查询“选择”子文档。但是,仅仅一秒钟后(或任何时间),完全相同的请求无法返回任何内容。MongoDb 文档没有任何变化,所以它一定是我做错了。

我已经使用 console.log(nextDeliveryDate) 在查询似乎失败并且日志的输出似乎相同时获取日期对象输出(当然与之前的时间差除外)。因此,错误似乎是完全随机且不受控制的。

const today = new Date();
let nextDeliveryDate = new Date();
nextDeliveryDate.setHours(0);
nextDeliveryDate.setMinutes(0);
nextDeliveryDate.setSeconds(0);
if (today.getDay() < 2) {
  nextDeliveryDate.setDate(today.getDate() + (2 - today.getDay()));
} else {
  nextDeliveryDate.setDate(today.getDate() + (7 - today.getDay()));
}

const result = await Kitchen.findById(req.query.kitchen).select({
  deliveries: {
    "$elemMatch": {
      delivery_date: {
        $gte: nextDeliveryDate
      }
    }
  }
}).exec();

// SCHEMA from a different file
const kitchenSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
_created: Date,
_lastModified: {
    type: Date,
    default: Date.now
},
name: {
    type: String,
    required: true,
    unique: true
},
location: {
    street: String,
    unit: String,
    city: String,
    state: String,
    zipcode: Number,
    latitude: Number,
    longitude: Number
},
routes: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Routes'
}],
manager: {
    type: String
},
employees: [{
    type: String
}],
deliveries: [{
    _id: mongoose.Schema.Types.ObjectId,
    _created: Date,
    weekday: Number,
    delivery_date: Date,
    routes: [{...}],
    status: {
        type: String,
        default: 'preparing'
    }
}]
});

因此,有时我会得到我期望的完美结果(来自数组的正确交付对象),有时它只是找不到任何东西。请帮忙。谢谢。

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


推荐阅读