首页 > 解决方案 > 无法使用日期(nodejs)使用猫鼬查询数据

问题描述

我正在尝试查询在 startDate 和 endDate 之间具有“inputDate”的所有协助文档。我已经在互联网上寻找了很长时间,但我无法让它工作。应该检索现在在我的数据库中的唯一文档。我正在使用 NodeJS+Mongoose。

控制器中的代码如下:

exports.getOccupation = (req, res, next) => {


    var inputDate = new Date("1999","10","13","16","0","0");
   
    Assistance.find({
        dateInterval:{
            startDate: {$lte:inputDate},
            endDate: {$gte:inputDate}
        }
    })
    .then(assistances => {
        console.log(assistances.length);
    })

}

模型代码:

const assistanceSchema = new Schema(
    {
        user_id:{
            type: Schema.ObjectId 
        },
        place:{
            longitude:{
                type:String
            },
            latitude:{
                type:String
            }
        },
        dateInterval:{
            startDate: Date,
            endDate: Date
        }       
    },
    {timestamps:true}
);

这是我要检索但我不能检索的文档

标签: javascriptnode.jsmongodbmongoosebackend

解决方案


我不确定,但我相信 find() 方法接受dateInterval.startDate而不是dateInterval:{startDate: ... }

尝试这样改变:

Assistance.find({
  $and: [
    { "dateInterval.startDate": { $lte: inputDate } },
    { "dateInterval.endDate": { $lte: inputDate } },
  ],
}).then((assistances) => {
  console.log(assistances.length);
});

推荐阅读