You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查MongoDB文档中sessionDate是否在unavailableDates数组内

检查Mongoose Admin文档中sessionDate是否存在于unavailableDates数组中

下面提供几种可行的实现方式:

1. 查询阶段直接筛选(推荐)

利用MongoDB的聚合表达式$expr结合$in操作符,在数据库层面直接筛选出符合条件的文档,效率更高。

const Admin = require('./path/to/adminModel');

// 查询所有sessionDate存在于自身unavailableDates数组中的管理员文档
Admin.find({
  $expr: {
    $in: ['$sessionDate', '$unavailableDates']
  }
})
.then(matchedAdmins => {
  console.log('符合条件的文档:', matchedAdmins);
})
.catch(error => {
  console.error('查询失败:', error);
});

2. 获取文档后用JS判断

如果已经获取到单个Admin文档实例,可以通过JavaScript数组方法检查,注意要比较时间戳避免Date对象引用问题:

const Admin = require('./path/to/adminModel');

Admin.findById('6332d9846c4803d9ffc53bb0')
.then(admin => {
  if (!admin) {
    console.log('未找到目标文档');
    return;
  }
  
  // 比较时间戳判断日期是否匹配
  const isUnavailable = admin.unavailableDates.some(date => 
    date.getTime() === admin.sessionDate.getTime()
  );
  
  console.log(`sessionDate是否在不可用日期列表中: ${isUnavailable}`);
})
.catch(error => {
  console.error('查询失败:', error);
});

3. 给Schema添加自定义实例方法

在Admin Schema中封装一个方法,方便后续重复调用:

const mongoose = require('mongoose');

const adminSchema = new mongoose.Schema({
  sessionDate: { type: Date },
  unavailableDates: { type: [Date] },
  email: {
    type: String,
    required: true,
    min: 6,
    max: 255
  },
  password: {
    type: String,
    required: true,
    min: 6,
    max: 1024
  }
});

// 添加实例方法,判断当前文档的sessionDate是否在不可用日期中
adminSchema.methods.isSessionUnavailable = function() {
  // 处理sessionDate为null的情况
  if (!this.sessionDate) return false;
  return this.unavailableDates.some(date => date.getTime() === this.sessionDate.getTime());
};

module.exports = mongoose.model('Admin', adminSchema);

使用该方法的示例:

const Admin = require('./path/to/adminModel');

Admin.findById('6332d9846c4803d9ffc53bb0')
.then(admin => {
  if (!admin) {
    console.log('未找到目标文档');
    return;
  }
  
  const result = admin.isSessionUnavailable();
  console.log(`sessionDate是否在不可用日期列表中: ${result}`);
})
.catch(error => {
  console.error('查询失败:', error);
});

内容的提问来源于stack exchange,提问作者Alan Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:42:05