我正在尝试从expressjs向mongodb插入一个日期值。我正在使用mongodb本机驱动程序。
问题是当我使用创建对象并使用该变量插入它时,日期将作为字符串插入。这是样本 -
var expenseTest = {date: new Date()};
database.collection('expensemaster').insert(expenseTest, function(err, r){
console.log("query executed");
});
这里是DB中的值 -
{
"_id" : ObjectId("584f9b6e8c06a5717d10ee59"),
"date" : "2016-12-13T06:55:24.698Z",
}
但是当我直接在插入查询中插入对象时,它的日期将以ISODate(date)的形式返回。
以下是样本 -
database.collection('expensemaster').insert({date: new Date()}, function(err, r) {
console.log("query executed");
});
db-
中的值{
"_id" : ObjectId("584fba82566fc8787e75a7ed"),
"date" : ISODate("2016-12-13T09:08:18.441Z")
}
我的问题是 - 如果我必须使用insertMany插入具有日期作为字段之一的对象数组。
如何在数据库中将日期作为ISODate(日期)获取。
答案 0 :(得分:5)
插入时而不是调用
database.collection('expensemaster').insert({date: new Date()}, function(err, r) {
console.log("query executed");
});
使用它:
database.collection('expensemaster').insert({date: new Date(Date.now()).toISOString()}, function(err, r) {
console.log("query executed");
});
这将创建一个iso日期供您插入。我使用Date.now()
,但您可以在那里插入任何日期。以下是.toISOString
所做内容的控制台日志
console.log(new Date(Date.now()).toISOString());
答案 1 :(得分:1)
要在MongoDB中另存为日期,我这样做了。
items = [{
serverName: 'myServer',
checkDate: '2016-12-13T06:55:24.698Z',
}]
addMany(items) {
// to tell mongodb to save as a date
items.forEach((obj) => {
obj.checkDate = new Date(obj.checkDate);
});
return this.dbClient
.then(db => db
.collection(this.collection)
.insertMany(items));
}
答案 2 :(得分:0)
在插入MongoDB数据库时使用new Date()
。插入MongoDB数据库时不要使用new Date().toISOString()
,因为MongoDB已经为您完成了转换,并且使用.toISOString()会使数据库上的.find()运算符或$ gte运算符失败< / p>