Loading... 测试环境中,需要导入一些数据,而这些数据来自甲方已有的测试环境。 对方使用db.xxx.find().toArray()进行了数据导出,但是到了本地导入就没有那么简单了。 数据是这样的 ``` [ { "_id" : ObjectId("xxx"), "createdAt" : NumberLong(1668159683), "deviceId" : "xxx", "actionType" : "2", "actionValue" : "1", "actionInfo" : "xxx" }, ... ``` 以上数据不是标准的json数据。json数据要求所有的字段都得是字符,而不能出现ObjectId和NumberLong这种字样。 那么我们使用几个命令进行替换一下 ``` sed -i 's!ObjectId(!{"$oid":!g' xxx.json sed -i 's! ),! },!g' xxx.json sed -i 's!NumberLong(!{"$numberLong": "!g' xxx.json sed -i 's!),!"},!g' xxx.json ``` 形成的数据如下: ``` [ { "_id": { "$oid": "xx" }, "createdAt": {"$numberLong": "1668159683"}, "deviceId": "xx", "actionType": "2", "actionValue": "1", "actionInfo": "xxxx" }, ... ``` 这样,我们就可以使用mongoimport进行导入了 ``` mongoimport --db xx --collection xx --file xx.json --jsonArray --username xx --password xx ``` 如果用navicat进行导入的话会遇到另一个问题,就是他会把oid这种字样也导入进去。 最后呢,写了一个[脚本][1],用于下载再次遇到这种情况的时候直接在线使用。 [1]: https://script.sddts.cn/modify_json_for_mongo.php 最后修改:2024 年 05 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏