Ank*_*dar 8 mongodb mongoimport
我已经以csv中的格式下载了大量数据.我正在使用mongoimport将数据输入MongoDB进行处理.如何获取MongoDB认可的日期格式?
带标题的示例数据
Date, Open Price, High Price, Low Price, Last Traded Price , Close Price, Total Traded Quantity, Turnover (in Lakhs)
04-Apr-2014,901,912,889.5,896.75,892.85,207149,1867.08
03-Apr-2014,908,918,897.65,900,900.75,156260,1419.9
02-Apr-2014,916,921.85,898,900.7,900.75,175990,1591.97
Run Code Online (Sandbox Code Playgroud)
Sal*_*ali 18
据我所知,没有办法做到这一点mongoimport.
但这可以通过导入数据然后运行以下脚本来实现(请注意,在Neil的Lunn脚本中,没有任何一点可以使用monthes,因为mongo可以通过这样做正确地转换你的日期new Date('04-Apr-2014')):
db.collName.find().forEach(function(el){
el.dateField = new Date(el.dateField);
db.collName.save(el)
});
Run Code Online (Sandbox Code Playgroud)
PS如果时区如此重要(我假设它不是,如果只有没有时间信息的日期),您可以只更改本地计算机上的时区,然后运行查询.(感谢Neil Lunn澄清此事)
从Mongo 3.4版开始,在使用mongoimport导入数据时,可以使用--columnsHaveTypes选项指定字段的类型。 这是参考链接。
样品mongoimport语法如下:
mongoimport --db XYZ --collection abc --type tsv --fields id.int32(),client_name.string(),app_name.auto(),date.date() --columnsHaveTypes --file "abc.tsv" --verbose
Run Code Online (Sandbox Code Playgroud)
你基本上有三个选项,好像你可以使用mongoimport直接导入CSV,它不知道如何从这种格式转换日期.
通过任何方式将CSV输入转换为JSON格式.对于您的日期值,您可以使用该工具可识别的扩展JSON语法表单.然后,您生成的结果JSON可以传递给mongoimport.
编写自己的程序,通过读取CSV输入并进行正确的转换来导入数据.
按原样导入CSV内容,然后使用您选择的语言直接在MongoDB集合中操作数据.
第三种选择的一种方法是循环结果并相应地更新日期:
var months = [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
db.collection.find({ },{ "Date": 1 }).forEach(function(doc){
var splitDate = doc.Date.split("-");
var mval = months.indexOf( splitDate[1] );
mval = ( mval < 10 ) ? "0" + mval : mval
var newDate = new Date( splitDate[2] + "-" + mval + "-" + splitDate[0] );
db.collection.update(
{ _id: doc._id },
{ "$set": { "Date": newDate } }
);
})
Run Code Online (Sandbox Code Playgroud)
这样可以确保您的日期转换为正确的BSON日期格式,并具有您期望的相同匹配日期值.
请注意"本地"时区转换,您将希望以UTC时间存储.
| 归档时间: |
|
| 查看次数: |
11937 次 |
| 最近记录: |