9

我已经创建并想现在导入一个虚拟集合。每个项目中的一个字段是“已创建”和“已更新”字段。我可以在源/json 文件中放入什么,以便 MongoDb 使用当前日期和时间作为导入值?

这行不通

"created" : Date()
4

2 回答 2

14

mongoimport用于以 CSV、TSV 或 JSON 格式导入数据现有数据。如果要插入新字段(例如created时间戳),则必须为它们设置一个值。

例如,如果要将created时间戳设置为当前时间,则可以从命令行获取 unix 时间戳(自纪元以来的秒数):

$ date +%s
1349960286

期望的JSON<date>表示mongoimport一个 64 位有符号整数,表示自纪元以来的毫秒数。您需要将 unixtime 秒值乘以 1000 并包含在 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
)   
于 2012-10-11T13:20:35.490 回答
3

正如 Stennie 正确指出的那样,您不能仅使用mongoimportor来执行此操作mongorestore:它们仅用于恢复您之前转储的数据。正确的做法是恢复数据,然后对恢复的数据进行更新。

使用新的 mongo 2.6,您可以使用$currentDate操作轻松完成此操作,该操作旨在将时间更新为当前时间戳。

在您的情况下,您需要类似的东西

db.users.update( 
  {},
  {
     $currentDate: {
      created: true,
      updated: true
     },
  }
) 
于 2013-10-25T09:08:37.633 回答