インストール
何でも楽したいタイプなのでbrewで。
brew tap mongodb/brew
brew install mongodb-community
起動と終了
手動起動もできますが、楽したいので自動で起動させておきます。
brew services start mongodb-community
なお、自動起動させた場合のデータパスは/usr/local/var/mongodbに設定されるようです。
起動しているかの確認は、
brew services list
停止は
brew services stop mongodb-community
概念
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({});