とほほのMongoDB入門

目次

環境

用語

MongoDB 用語と MySQL 用語の対比

MongoDB をインストールする

# vi /etc/yum.repos.d/mongodb-org-3.0.repo
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

# yum -y install mongodb-org
# chkconfig mongod on
# systemctl start mongod

対話シェル

対話シェルを起動する
# mongo

対話シェルを終了する
> exit

データベース

データベースの一覧を表示する
> show dbs

データベースを使用する (未作成のデータベースであれば作成される)
> use test1

使用中のデータベースを表示する
> db

使用中のデータベースを削除する
> db.dropDatabase()

コレクション

コレクションの一覧を表示する
> show collections

コレクションを作成する (作成せずに直接 insert することも可)
> db.createCollection('users');

コレクションを削除する
> db.users.drop();

ドキュメント

ドキュメントを挿入する
> db.users.insert({name: "Tanaka", age: 26});
> db.users.insert({name: "Suzuki", age: 32});

ドキュメントを全件表示する
> db.users.find();

ドキュメントを全件削除する
> db.users.remove({});

ドキュメントを更新する

ドキュメントを更新する (プロパティ更新)
> db.users.update({name: "Tanaka"}, { $set: { age: 27 }});

ドキュメントを更新する (プロパティ削除)
> db.users.update({name: "Tanaka"}, { $unset: { age: "" }});

ドキュメントを更新する (プロパティに1を加算)
> db.users.update({name: "Tanaka"}, { $inc: { age: 1 }});

ドキュメントを更新する (プロパティ名を変更)
> db.users.update({name: "Tanaka"}, { $rename: { age: "nenrei" }});

すべてのドキュメントを更新する (multi:true をつけないと、最初にマッチした 1件しか更新しない)
> db.users.update({}, { $set: { age: 28 } }, { multi: true });

ドキュメントを検索する

ドキュメントを検索する
> db.users.find({name:"Tanaka"});

ドキュメントを検索する(正規表現一致)
> db.users.find({name: /ka/ });

数値の大小比較 ($gt, $gte, $lt, $lte)
> db.users.find({age:{$gt:30}});

異なるもの
> db.users.find({age:{$ne:32}});

AND検索
> db.users.find({name:"Tanaka", age:26});
> db.users.find({$and: [{name:"Tanaka"}, {age:26}] });

OR検索
> db.users.find({$or: [{name:"Tanaka"}, {age:32}] });

どれかにマッチすれば
> db.users.find({age: {$in: [ 26, 32 ]}});

nameプロパティのみ表示
> db.users.find({}, { _id:0, name:1 });

1件のみ表示する
> db.users.findOne();

10件のみ表示する
> db.users.find().limit(10);

ソートする (1:昇順、-1:降順)
> db.users.find({}).sort({name:1});