Edited at

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({});