mongoDBよく使うコマンド集(随時更新)

More than 1 year has passed since last update.


概要

すぐ忘れてしまうmongoDBのコマンドを自分用にメモ


接続系

# 自サーバにデフォルトで接続

$ mongo

# 自サーバのmongoDBをport指定で接続
$ mongo --port 30000

# mongoDBに認証をかけている場合のid/pass指定で接続
$ mongo -u admin -p password --authenticationDatabase admin

# 外部サーバにあるmongoDBへ接続
$ mongo serverhostname:27017


ユーザ管理系


DBユーザの作成

# mongoDB管理者ユーザの作成

> use admin
> db.createUser({user: "admin", pwd: "password", roles: [{ role: "root", db: "admin" }]})

# 各DB管理者ユーザの作成
> use admin
> db.createUser({user: "dbowner", pwd: "password", roles: [{ role: "dbOwner", db: "somedb" }]})


データベース操作系


全般

# 作成されているデータベースの一覧表示

> show dbs

# データベースの切替
> use somedb

# コレクション(テーブル)の一覧
> show collections


find系


# コレクションの全件取得
> db.[collection name].find()

# 条件つき取得
> db.[collection name].find({column: 'aa'})

# and条件つき取得
> db.[collection name].find({column: 'aa', column2: 10})

# or条件つき取得
> db.[collection name].find({column: 'aa'}, {column2: 10})

# 否定条件(indexに注意)
> db.[collection name].find({column: {$ne: 'aa'}})

# greater than
> db.[collection name].find({column2: {$gt: 10}})

# greater than or equal to
> db.[collection name].find({column2: {$gte: 10}})

# like
> db.[collection name].find({column: /^aa/})

# sort asc
> db.[collection name].find().sort({column2: 1})

# sort desc
> db.[collection name].find().sort({column2: -1})

# count
> db.[collection name].count()

# limit
> db.[collection name].limit(2)


更新系

# insert

> db.[collection name].insert({column: 'aa', column2: 10})

# update
# 第1引数が条件、第2引数がset内容
> db.[collection name].update({column: 'aa'}, {$set: {column2: 20}})

# delete
> db.[collection name].remove({column: 'aa'})


インデックス操作

# インデックス作成

> db.[collection name].ensureIndex({column:1})

# インデックス作成(インデックス名をつける)
> db.[collection name].ensureIndex({column:1}, {name: 'index name'})

# unique制約
# sparse: trueをしないとnullもuniqueの制約対象になってしまう
> db.[collection name].ensureIndex({column:1}, {unique: true, sparse: true})

# インデックス削除
> db.[collection name].dropIndex('index name')