我已经创建并想现在导入一个虚拟集合。每个项目中的一个字段是“已创建”和“已更新”字段。我可以在源/json 文件中放入什么,以便 MongoDb 使用当前日期和时间作为导入值?
这行不通
"created" : Date()
我已经创建并想现在导入一个虚拟集合。每个项目中的一个字段是“已创建”和“已更新”字段。我可以在源/json 文件中放入什么,以便 MongoDb 使用当前日期和时间作为导入值?
这行不通
"created" : Date()
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
)
正如 Stennie 正确指出的那样,您不能仅使用mongoimport
or来执行此操作mongorestore
:它们仅用于恢复您之前转储的数据。正确的做法是恢复数据,然后对恢复的数据进行更新。
使用新的 mongo 2.6,您可以使用$currentDate操作轻松完成此操作,该操作旨在将时间更新为当前时间戳。
在您的情况下,您需要类似的东西
db.users.update(
{},
{
$currentDate: {
created: true,
updated: true
},
}
)