MongoDB的时间戳(MongoDb timestamp)

2019-08-01 08:01发布

我已创建并想现在导入虚拟集合。 在每个项目中的一个字段是“创造”和“更新”的领域。 我可以把什么源/ JSON文件,这样的MongoDB将使用当前日期和时间作为进口的价值?

这不会工作

"created" : Date()

Answer 1:

mongoimport旨在用于导入在CSV,TSV或JSON格式存在的数据的数据。 如果要插入新的领域(如created时间戳),你将不得不为他们设定的值。

例如,如果你想设定的created时间戳到当前的时间,你可以得到命令行(这将是自纪元秒)Unix时间戳:

$ date +%s
1349960286

的JSON <date>表示该mongoimport预计是表示从epoch毫秒的64位带符号整数。 您需要在1000乘以unixtime秒值,并在您的JSON文件:

{ "created": Date(1349960286000) }

另一种方法是,他们已经插入后所创建的时间戳添加到文件。

例如:

db.mycoll.update(
    {created: { $exists : false }},    // Query criteria
    { $set : { created: new Date() }}, // Add 'created' timestamp
    false, // upsert
    true   // update all matching documents
)   


Answer 2:

作为Stennie正确地指出,你不能只是这样做mongoimportmongorestore :他们只是恢复您以前转储的数据。 这样做的正确的方法是恢复数据,然后做出对恢复的数据更新。

随着新蒙戈2.6,你可以做到这一点很容易地使用$的currentdate操作,这是为了更新时间当前时间戳。

在你的情况,你需要这样的东西

db.users.update( 
  {},
  {
     $currentDate: {
      created: true,
      updated: true
     },
  }
) 


文章来源: MongoDb timestamp