LoginSignup
17
8

More than 5 years have passed since last update.

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

Posted at

概要

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

17
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8