mongo

Macでmongodbを使う最低限のメモ

More than 1 year has passed since last update.

インストール

何でも楽したいタイプなのでbrewで。

brew install mongodb

起動と終了

主導起動もできますが、楽したいので自動で起動させておきます。

brew services start mongodb

なお、自動起動させた場合のデータパスは/usr/local/var/mongodbに設定されるようです。

起動しているかの確認は、

brew services list

停止は

brew services stop mongodb

概念

mongodbはいわゆるドキュメントDBと呼ばれる部類のデータベースなですが、登場する用語はおおよそRDBと下記のように対応しています。
とは言え、スキーマレスなので、カラムを設定するような行為はありません。

RDB mongo
database database
table collection
row document

基本操作

コンソールの起動

mongo

>

コンソールを抜けるのはexitとします。

各種確認

とりあえずdbを確認。初期でlocalというdbが存在しています。

show dbs;

database作成

明示的に作成しなくてもdb usernameとすることで、dbが作成されます(但し、実際に作成されるのはcollection作成時)。

use mydb;
db.createCollection("members");

コレクションができたかどうかはshow collectionsで確認できます。

なお、collectionは明示的に作成しなくてもinsert時に自動生成することができます。

show collections;

databaseの削除

削除対象のdbをuseしている状態でdropします。

db.dropDatabase();

自分がどこにいるかはdb.stats()で確認できます。

db.stats();

挿入

挿入します。同じ構造である必要がありません。
collectionを事前に作っていなくても、自動生成されます。

db.members.insert({name: "hoge",age: 30});
db.members.insert({name: "foo",age: 40});

全件検索

とりあえず全件検索。

db.members.find();

条件検索

完全一致

db.members.find({name: "hoge"});

正規表現

いわゆるlike的な検索は正規表現で。

db.members.find({name: /ho/});

AND 検索

ANDは,で繋げます。

db.members.find({name:/ho/,age:{$gt:20}});

OR 検索

ORは少々めんどい。

db.members.find({$or: [{name:/h/},{age:{$gt:20}}]});

同じカラムの複数条件はINを使う。

distinct

いちおうDISTINCTも。

db.members.distinct("name");

あるKeyが存在するか

あるKeyが存在するかどうかで検索。

db.members.find({age: {$exists: true}});

削除

全件削除

とりあえず全件削除。

db.members.remove({});