Deno 用の MongoDB ドライバーとして、deno_mongo が公開されています。 Deno Deploy 上でも使えるので、Deno Deploy で公開する Web API から MongoDB Atlas に接続する、といったことが簡単に行えます。
MongoDB サーバーへ接続する
ローカルホスト上で起動した MongoDB サーバーへ接続するには次のようにします。
import { MongoClient } from "https://deno.land/x/mongo@v0.31.1/mod.ts";
const client = new MongoClient();
await client.connect("mongodb://127.0.0.1:27017");
// 後は client インスタンスを使って MongoDB を操作する
実運用を考えると、MONGODB_URI_MYAPP
のような環境変数で接続先の MongoDB サーバー(およびユーザー ID とパスワード)を指定できるようにしておいた方がよいでしょう。
例えば、MongoDB Atlas サービスを使用している場合は、次のような構成の接続文字列 (SRV URI) が発行されますが、ここには接続パスワードなどが含まれるので、この URI をハードコーディングすることはできません。
?authMechanism=SCRAM-SHA-1
のように認証メカニズムを指定できます。次の client.ts
モジュールは、MongoClient
インスタンスを MONGODB_URI_MYAPP
環境変数が示す MongoDB サーバーに接続し、export
しています。
メインモジュールから次のようにインポートすることで、簡単に MongoClient
インスタンスを使用できます。
deno run
でプログラムを実行するときは、--allow-env
による環境変数へのアクセスと、--allow-net
によるネットワークへのアクセスの許可が必要です。
$ deno run --allow-env --allow-net main.ts
[
{ name: "admin", sizeOnDisk: 40960, empty: false },
{ name: "config", sizeOnDisk: 61440, empty: false },
{ name: "local", sizeOnDisk: 40960, empty: false }
]
次のように Deno のコンフィグファイルを作成しておけば、deno task main
とするだけで実行できるようになります。
コレクションを参照する
MongoDB データベース内のコレクションを参照するときは、そこに含まれるドキュメントの型をあらかじめ定義しておくことができます。
次の例では、書籍データ(books
コレクション)のスキーマ定義を行っています。
このようにして Collection
インスタンスを取得したら、あとは自由にドキュメントの追加や検索を行えます。
コレクション内のドキュメントを操作する
ドキュメントを追加する (insertOne, insertMany)
ドキュメントを追加するには、Collection
クラスの insertOne
や insertMany
メソッドを使用します。
booksCollection.insertMany([
{ title: "Title-1", author: "Author-1" },
{ title: "Title-2", author: "Author-2" },
{ title: "Title-3", author: "Author-3" },
]);
ドキュメントを検索する (find, findOne)
ドキュメントを取得するには、Collection
クラスの find
メソッドや findOne
メソッドを使用します。
その他のメソッドは、公式サイト を参考にしてください。