我无法使用带有日期的findOne在MongoDB中找到记录。
我的架构:
var userSchema = new Schema({
profileID: String,
notifications: []
});
//I am storing the date variable as new Date();
我的数据:
{
"_id": "5938dc8db08803411af0cd05",
"profileID": "123",
"notifications": [
{
"read": false,
"date": "2017-06-08 13:16:58"
}
]
}
我的代码:
//I have taken the rest of the junk out as the problem is just with this part. By junk I mean routes and all for Node.js
console.log("1: " + req.body.date);
console.log("2: " + typeof(req.body.date));
console.log("3: " + req.body.id);
userModel.findOne({profileID: req.body.id, "notifications.date": new Date(req.body.date)},
function(err, data) {
if (err){
console.log("4: " + err);
} else {
console.log("5: " + data);
}
});
console.log的结果:
1: 2017-06-08 13:16:58
2: string
3: 123
5: null
我做错了什么?我已经尝试了各种各样的方法与日期,但它没有工作。
这肯定是日期的问题,但我将如何让它发挥作用?
我的堆栈:MongoDB v:3.1.5,Mongoose:4.4.10
提前致谢
答案 0 :(得分:1)
不是以这种方式定义notifications
,而是需要将其定义为指定其内容类型的对象数组。您的新架构应该是:
var userSchema = new Schema({
profileId: String,
notifications: [{
read: Boolean,
date: Date
}]
});
这可以解决您的问题并返回日期。