概要
すぐ忘れてしまう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')