JavaでmongoDBの基本的な操作まとめ(select, insert, update, delete)

こんにちは。ぐっさんです。
 
NoSQLでは、有名なmongoDBがあります。Javaでいろいろ操作してみようと思ったのですが、思ったよりインターネットに情報がなく、情報があっても拡散していたので、備忘もかねてブログに書こうと思いました。

mongoDBの概要

MongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるデータベースに分類されるものである。RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。

コネクションの取得

まずは、mongoDBのサーバーのコネクションを取得します。

MongoClient mongoClient = MongoClients.create(connectionString);

コレクションの取得

コネクションが取得できたら、対象のデータベースからコレクションオブジェクトを取得します。

MongoCollection<Document> collection
	= mongoClient.getDatabase("{db_name}").getCollection("{collection_name}");

ここまで来たら、準備は完了です。次から、一般的な検索・登録・更新・削除を紹介してきます。

ドキュメント件数の取得

レコード件数は、下記で取得できます。Filtersクラスを使用することで、条件を指定します。使用方法としては、下記のimportを行い、eq(equal)やne(not equal)、gt(greater than)、lt(less than)などで条件を指定します。
 
import static com.mongodb.client.model.Filters.*;
 
子要素の条件指定では、ドットで繋ぐことで指定することができます。

long documentCount = collection.countDocuments(Filters.and(
	gte("time", checkTimeStr),
	eq("parentCode", parentCode),
	eq("child.childCode", childCode)
));

ドキュメントの取得

ドキュメントは、下記で登録できます。ドキュメント件数の取得と同様にFilterクラスを使用して、条件を指定します。

JSONObject result = null;
MongoCursor<Document> curosr = collection
		.find(Document.parse("{\"time\":\"" + checkTimeStr + "}"))
		.sort(Document.parse("{time:-1}"))
		.limit(1)
		.iterator();
while (curosr.hasNext()) {
	result = new JSONObject(curosr.next().toJson());
}
curosr.close();

ドキュメントの登録

コレクションオブジェクトのinsertOneメソッドでドキュメントを登録します。

JSONObject insertObj = new JSONObject();
collection.insertOne(Document.parse(insertObj .toString()));

ドキュメントの更新

ドキュメントは、下記で更新できます。コレクションオブジェクトのreplaceOneメソッドで更新します。

JSONObject updatedRecord = new JSONObject(result.toString());
updatedRecord.put("time", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")));
updatedRecord.getJSONObject("data").put("status", "updated");
collection.replaceOne(Document.parse(result.toString()).toBsonDocument(),Document.parse(updatedRecord.toString())).toString());

ドキュメントの削除

ドキュメントの削除は、コレクションクラスのdeleteManyで引数に条件を指定して、削除します。

collection.deleteMany(Document.parse("{\"time\":{$gte:\"2023-06-28T00:00:00.000\"}}"));

さいごに

まずは、mongoDBの処理の一例を紹介してみました。他にも多くのメソッドが用意されてますので、処理に応じて試してみてください。
 
それでは、良いmongoDBライフを!
 
 
 
 
《関連記事》

Gmail API連携(準備編)
技術
2023.11.8(Wed)

Gmailの機能をプログラムから操作できる! Gmail API連携(準備編)

#ツール

実務で日常的に使う用語17選
技術
2023.5.30(Tue)

未経験者プログラマー必見! 実務で日常的に使う用語17選【第2弾】

#まとめ#プログラム

ノーコード・ローコードとは
技術
2022.12.23(Fri)

ノーコード・ローコードとは?簡単にまとめてみた

#まとめ#プログラム#ツール

記事をシェア
MOST VIEWED ARTICLES