我有一个带有一些数据的JSON文件,想要添加日期信息,然后在mongoDB中插入这个JSON文件的内容。 JSON文件看起来像这样:
[
{
"installationTime": "How do I insert a date Object here?",
"someOtherValues": 0,
...
},
...
]
并在node.js中插入:
const content = await readFileAsync('pathToJSONfile.json');
// readFileAsync is fs.readFile wrapped in a promise
await db.createCollection('testCollection');
await db.collection('testCollection').insert(JSON.parse(content));
我的问题是:如何将ISODate("2016-12-18T18:30:00Z")
之类的日期对象插入JSON文件?她在这个论坛上发现:
"installationTime": { "$date": "2016-12-18T18:30:00Z" }
但是我从mongoDB key $date must not start with '$'
得到了一个错误。
我的方法是否可以使用json文件和来自节点驱动程序的insert命令?
答案 0 :(得分:1)
我现在已经解决了这个问题:
导入节点模块child_process ...
import { exec } from 'child_process';
...为了执行shell命令。 并使用mongoimport插入JSON文件:
exec('mongoimport --jsonArray --db tstdb --collection testCollection --file pathToJSONfile.json', (error) => {
if (error) {
console.log(`exec error: ${error}`);
}
});
然后,JSON文件中的$date
键可用于导入日期对象:
"installationTime": { "$date": "2017-10-01T00:00:00.000Z" },
现在find()显示日期存储为ISODate对象:
> db.getCollection("feed_in_payments").find()
{ "_id" : ObjectId("592bd66cb3395ba514bc1005"), "installationTime" : ISODate("2000-01-01T00:00:00Z"), ...