将日期值从nodejs插入到mongodb

时间:2016-12-13 09:41:57

标签: node.js mongodb

我正在尝试从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(日期)获取。

3 个答案:

答案 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>