我是MongoDB的新手,有一点卡住了,以下是解释。
我得到一个格式为dd-mm-yyy的日期,我想根据我得到的特定日期找到所有的数据,但在mongo这边,我有一个字段createAt,其中包含ISODate格式的值。但是在mongo这边,我有一个字段createdAt,其中包含ISODate格式的值。当比较这两个字段时,我没有得到任何数据。
mySchema.find({createdAt: {"$eq": date}}).exec();
在数据库中,createdAt的值是ISODate("2020-05-05T14:49:37.210Z"),而我们得到的日期是05-05-2020。
请大家帮我理解一下我哪里做错了。
你可以将ISO日期转换为任何字符串格式,你想在... 汇聚管道 由 dateToString 函数,然后进行比较。
下面是如何创建一个模式,然后使用它的代码的例子。
// 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);
})