[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた（mongoexport/mongoimport編）

# はじめに

[こちら](https://qiita.com/500InternalServerError/items/20f646bc38725dea580b)の記事では、MongoDB ShellからAutonomous JSON Databaseに接続して、MongoDBに対する操作と同様の操作を行えることを確認しました。

今回はMongoDBのデータ移行ツールであるmongoexport/mongoimportが、Autonomous JSON Databaseに対して使用できるかを検証してみました。

# 1.mongoexportを使用したMongoDBからのエクスポート
まず、Autonomous JSON Databseにインポートするデータを作成するために、mongoexportを使用してMongoDBからコレクションdeptの内容をエクスポートします。
ここではdept.jsonというファイル名で出力します。

```
[opc@work ~]$ mongoexport --uri='mongodb://admin:Demo%231Demo%231@127.0.0.1:27017/mongo?authSource=admin' --collection=dept --out=dept.json 
2022-01-20T22:16:27.835+0900	connected to: mongodb://[**REDACTED**]@127.0.0.1:27017/mongo?authSource=admin
2022-01-20T22:16:27.845+0900	exported 4 records
[opc@work ~]$
```
dept.jsonの内容を確認してみます。

```
[opc@work ~]$ vi dept.json
```

```json:dept.json
{"_id":{"$oid":"61e7c80d8845e822d33dab38"},"deptno":10,"deptname":"ACCOUNTING","location":"NEW YORK"}
{"_id":{"$oid":"61e7c8128845e822d33dab39"},"deptno":20,"deptname":"RESEARCH","location":"DALLAS"}
{"_id":{"$oid":"61e7c8158845e822d33dab3a"},"deptno":30,"deptname":"SALES","location":"CHICAGO"}
{"_id":{"$oid":"61e7c8198845e822d33dab3b"},"deptno":40,"deptname":"OPERATIONS","location":"BOSTON"}
```
コレクションdeptの内容がdept.jsonにエクスポートされていることが確認できました。

# 2.mongoimportを使用したAutonomous JSON Databaseへのインポート
MongoDBからmongoexportでエクスポートしたJSONファイルを、mongoimportでAutonomous JSON Databaseにインポートしてみます。
ここではJSONファイルの内容をコレクションdept_importにインポートします。

```
[opc@work ~]$ mongoimport --uri='mongodb://mongo:Demo%231Demo%231@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27016/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false' --collection=dept_import --type=json --file=dept.json --writeConcern {w:0}
2022-01-20T22:38:32.065+0900	connected to: mongodb://[**REDACTED**]@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27016/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false
2022-01-20T22:38:32.066+0900	done
[opc@work ~]$
```
無事インポートできたようです。

MongoDB ShellでAutonomous JSON Databaseに接続して、確認してみます。

```
[opc@work ~]$ mongosh 'mongodb://mongo:Demo%231Demo%231@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true'
Current Mongosh Log ID:	61e965f33dc9318379a0301c
Connecting to:		mongodb://<credentials>@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27017/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true
Using MongoDB:		4.2.14
Using Mongosh:		1.1.8

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

mongo>
```
コレクションの一覧を確認します。

```
mongo> show collections
dept
dept_import
mongo>
```
dept_importが作成されていることが確認できました。
コレクションdept_importの内容を確認してみます。

```
mongo> db.dept_import.find()
[
  {
    _id: ObjectId("61e7c80d8845e822d33dab38"),
    deptno: 10,
    deptname: 'ACCOUNTING',
    location: 'NEW YORK'
  },
  {
    _id: ObjectId("61e7c8128845e822d33dab39"),
    deptno: 20,
    deptname: 'RESEARCH',
    location: 'DALLAS'
  },
  {
    _id: ObjectId("61e7c8158845e822d33dab3a"),
    deptno: 30,
    deptname: 'SALES',
    location: 'CHICAGO'
  },
  {
    _id: ObjectId("61e7c8198845e822d33dab3b"),
    deptno: 40,
    deptname: 'OPERATIONS',
    location: 'BOSTON'
  }
]
mongo>
```
JSONファイルの内容が正しくインポートされていることが確認できました。

# 3.mongoexportを使用したAutonomous JSON Databaseからのエクスポート

先ほどインポートしたコレクションdept_importの内容を、mongoexportでエクスポートします。
ここではdept_import.jsonというファイル名で出力します。

```
[opc@work ~]$ mongoexport --uri='mongodb://mongo:Demo%231Demo%231@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27016/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false' --collection=dept_import --out=dept_import.json
2022-01-20T23:02:22.094+0900	connected to: mongodb://[**REDACTED**]@XXXXXXXXXX-AJD1.adb.ap-tokyo-1.oraclecloudapps.com:27016/mongo?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false
2022-01-20T23:02:23.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:24.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:25.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:26.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:27.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:28.095+0900	[........................]  mongo.dept_import  0/4  (0.0%)
2022-01-20T23:02:28.677+0900	[########################]  mongo.dept_import  4/4  (100.0%)
2022-01-20T23:02:28.677+0900	exported 4 records
[opc@work ~]$
```
無事エクスポートできたようです。
dept_import.jsonの内容を確認してみます。

```
[opc@work ~]$ vi dept_import.json
```

```hson:dept_import.json
{"_id":{"$oid":"61e7c80d8845e822d33dab38"},"deptno":10,"deptname":"ACCOUNTING","location":"NEW YORK"}
{"_id":{"$oid":"61e7c8128845e822d33dab39"},"deptno":20,"deptname":"RESEARCH","location":"DALLAS"}
{"_id":{"$oid":"61e7c8158845e822d33dab3a"},"deptno":30,"deptname":"SALES","location":"CHICAGO"}
{"_id":{"$oid":"61e7c8198845e822d33dab3b"},"deptno":40,"deptname":"OPERATIONS","location":"BOSTON"}
```
Autonomous JSON Database内のコレクションdept_importの内容がdept_import.jsonにエクスポートされていることが確認できました。

# まとめ
MongoDBのデータ移行ツールであるmongoexport/mongoimportが、Autonomous JSON Databaseに対して使用できることが確認できました。

# 参考情報
[MongoDB Documentation : mongoexport](https://docs.mongodb.com/database-tools/mongoexport/)
[MongoDB Documentation : mongoimport](https://docs.mongodb.com/database-tools/mongoimport/)