如何将用户输入日期与 mongodb ISODate 对象进行比较

How to compare user input date with mongodb ISODate object

我是MongoDB的新手,有一点卡住了,下面是解释。

我得到一个格式为 dd-mm-yyyy 的日期,我想根据我得到的特定日期找到所有数据。 但是在 mongo 方面,我有一个 createdAt 字段,它包含 ISODate 格式的值。 在比较这两者时,我没有得到任何数据。

mySchema.find({createdAt: {"$eq": date}}).exec();

此处数据库中的 createdAt 值为 ISODate("2020-05-05T14:49:37.210Z"),我们得到的日期为 05-05-2020

请帮我看看我哪里做错了。

您可以通过 dateToString 函数将 ISO 日期转换为您在 聚合管道 中想要的任何字符串格式,然后进行比较。

下面是如何创建模式然后使用它的代码示例。

// UserModal.js

const mongoose = require("mongoose");
const Schema = mongoose.Schema;


var UserSchema = new Schema({
    first_name: {
        type: String,
        required: true
    },

    last_name: {
        type: String,
        required: true
    },
    ......
}, { timestamps: true });


//make this available to our users in Node applications
module.exports.User = mongoose.model('User', UserSchema);

然后在控制器中

const User = require("UserModal").User;

User.aggregate([
  {
    $addFields: {
      "dateString": { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } }
    }
  },
  {
    $match: {
      dateString: {
        $eq: "2020-05-05"
      }
    }
  }
]).exec((err, records) => {
  if (err) throw err;
  console.log(records);
})