MongoDb时间戳

Sim*_*mba 8 collections timestamp date mongodb unix-timestamp

我已创建并希望现在导入虚拟集合.每个项目中的一个字段是"已创建"和"已更新"字段.我可以将什么放在source/json文件中,以便MongoDb将当前日期和时间用作导入的值?

这不行

"created" : Date()
Run Code Online (Sandbox Code Playgroud)

Ste*_*nie 13

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

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

$ date +%s
1349960286
Run Code Online (Sandbox Code Playgroud)

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

{ "created": Date(1349960286000) }
Run Code Online (Sandbox Code Playgroud)

另一种方法是在插入文档后将创建的时间戳添加到文档中.

例如:

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

  • [`ISODate()`函数](https://github.com/mongodb/mongo/blob/v2.2/src/mongo/shell/utils.js#L400)是一个方便的助手来创建`Date() `对象.`ISODate()`构造函数需要ISO8601样式的日期/时间字符串,而`Date()`需要unixtime(自纪元以来的秒数).如果你在`mongo` shell中尝试`new Date()`和`new ISODate()`,你会看到它们都产生相同的值(一个`ISODate`).两种格式都具有相同的[BSON表示](http://bsonspec.org/#/specification),这是一个UTC日期时间. (4认同)