如何使用 mongoose 中的 find 函数在 mongodb 中编写 or 语句

How to write an or statement in mongodb using the find function in mongoose

我正在尝试检查某个时间范围内是否有预订。不确定如何使用 mongoose 在 mongodb 中使用 or 条件。

这是我的资料:

const appoinments = await Appointment.find({
      seller: seller._id,
      startTime: {
        $gt: ISODate(new Date(req.body.startTime).toISOString),
        $lt: ISODate(new Date(req.body.endTime).toISOString),
      },// I WANT TO ADD THE OR TO THIS TWO QUERIES
      endTime: {
        $gt: ISODate(new Date(req.body.startTime).toISOString),
        $lt: ISODate(new Date(req.body.endTime).toISOString),
      },
    });

我想检查并查找任何与即将添加的新约会冲突的约会或任何在约会期间结束的约会。

我的约会是这样的:

 const appointmentSchema = new mongoose.Schema({
    seller: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Seller",
     },
    startTime: {
        type: Date,
        required: true,
      },
    endTime: {
        type: Date,
      },
  });

你可以简单地使用mongoose提供的or()成员函数。它的工作方式就像在 mongoose documentation.

中定义的 $or 运算符一样

希望对您有所帮助!

const appoinments = await Appointment.find().or([
    {
        startTime: {
            $gt: ISODate(new Date(req.body.startTime).toISOString),
            $lt: ISODate(new Date(req.body.endTime).toISOString),
        }
    },
    {
        endTime: {
            $gt: ISODate(new Date(req.body.startTime).toISOString),
            $lt: ISODate(new Date(req.body.endTime).toISOString),
        },
    }
]);