如何将用户输入日期与 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);
})
我是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);
})