
MongoDBの作成、更新、検索、レコードの削除、索引付けなどの基本的な操作を行う方法を示す簡単なガイドです。この例では、Mac OS X 10.8で動作するMongoDB 2.0.7を使用しています.MongoDBクライアントとサーバコンソールは、どちらも同じマシン上で実行されます。
1. MongoDBをインストールする
リンク://mongodb/how-to-install-mongodb-on-windows/[Windows]、リンク://mongodb/how-to-install-mongodb-on-ubuntu/[Ubuntu]/mongodb/how-to-install-mongodb-on-mac-os-x/[Mac OS X]インストールは簡単ですが、基本的にMongoDB zipファイルを余分にダウンロードして、 `$ MongoDB-folder/bin/mongod`コマンドを実行するだけです。
`mongod`を使用してMongoDBを起動します。
$./mongod
Tue Sep 11 21:55:36[initandlisten]MongoDB starting :
pid=72280 port=27017 dbpath=/data/db/64-bit host=Yongs-MacBook-Air.local
Tue Sep 11 21:55:36[initandlisten]db version v2.0.7, pdfile version 4.5
Tue Sep 11 21:55:36[initandlisten]options: {}
Tue Sep 11 21:55:36[initandlisten]journal dir=/data/db/journal
Tue Sep 11 21:55:36[initandlisten]recover : no journal files present, no recovery needed
Tue Sep 11 21:55:36[websvr]admin web console waiting for connections on port 28017
Tue Sep 11 21:55:36[initandlisten]waiting for connections on port 27017
2. MongoDBを接続する
MongoDBに接続するには、 `$ MongoDB-folder/bin/mongo`を使います
$ ./mongo MongoDB shell version: 2.0.7 connecting to: test
3.データベースまたはテーブルを作成する(コレクション)
MongoDBでは、データベースとテーブルの両方が、最初のデータが挿入されると自動的に作成されます。 `use database-name`を使用してデータベースに切り替えます(まだ作成されていなくても)。
以下の例では、1つのレコードを挿入すると、データベース “mkyong”とテーブル “users”がオンザフライで作成されます。
$ ./mongo
MongoDB shell version: 2.0.7
connecting to: test
> use mkyong
switched to db mkyong
> db.users.insert({username:"mkyong",password:"123456"})
> db.users.find()
{ "__id" : ObjectId("504f45cd17f6c778042c3c07"), "username" : "mkyong", "password" : "123456" }
あなたが知っておくべき3つのデータベースコマンド。
-
show dbs
– すべてのデータベースを一覧表示します. -
use db
name
– dbnameに切り替えます. -
show collections
– 現在選択されているデータベースのすべてのテーブルを一覧表示します.
4.レコードを挿入する
レコードを挿入するには、 `db.tablename.insert({data})`や `db.tablename.save({data})`を使用します。どちらも動作します。
> db.users.save({username:"google",password:"google123"})
> db.users.find()
{ "__id" : ObjectId("504f45cd17f6c778042c3c07"), "username" : "mkyong", "password" : "123456" }
{ "__id" : ObjectId("504f48ea17f6c778042c3c0a"), "username" : "google", "password" : "google123" }
5.レコードを更新する
レコードを更新するには、 `db.tablename.update({criteria}、{$ set:{new value}})`を使います。以下の例では、username: “mkyong”のパスワードが更新されています。
> db.users.update({username:"mkyong"},{$set:{password:"hello123"}})
> db.users.find()
{ "__id" : ObjectId("504f48ea17f6c778042c3c0a"), "username" : "google", "password" : "google123" }
{ "__id" : ObjectId("504f45cd17f6c778042c3c07"), "password" : "hello123", "username" : "mkyong" }
6.レコードを探す
レコードを検索または照会するには、 `db.tablename.find({criteria})`を使用します。
-
6.1 ** テーブル “users”のすべてのレコードをリストします。
> db.users.find()
{ "__id" : ObjectId("504f48ea17f6c778042c3c0a"), "username" : "google", "password" : "google123" }
{ "__id" : ObjectId("504f45cd17f6c778042c3c07"), "password" : "hello123", "username" : "mkyong" }
-
6.2 ** ユーザー名が “google”のレコードを検索する
> db.users.find({username:"google"})
{ "__id" : ObjectId("504f48ea17f6c778042c3c0a"), "username" : "google", "password" : "google123" }
-
6.3 ** ユーザー名の長さが2以下のレコードを検索する
db.users.find({$where:"this.username.length<=2"})
-
6.4 ** ユーザ名フィールドが存在するレコードを検索します。
db.users.find({username:{$exists : true}})
7.レコードの削除
レコードを削除するには、 `db.tablename.remove({criteria})`を使います。以下の例では、ユーザー名 “google”のレコードは削除されています。
> db.users.remove({username:"google"})
> db.users.find()
{ "__id" : ObjectId("504f45cd17f6c778042c3c07"), "password" : "hello123", "username" : "mkyong" }
-
注意** テーブルからすべてのレコードを削除するには、 `db.tablename.remove()`を使います。テーブルを削除するには、 `db.tablename.drop()`を使います。
8.インデックス作成
インデックスは、データのクエリの速度を向上させるのに役立ちます。
-
8.1 ** テーブル “users”のすべてのインデックスを一覧表示します。デフォルトでは、 “__id”列は常にプライマリキーであり、自動的に作成されます。
> db.users.getIndexes()[ {
"v" : 1,
"key" : {
"__id" : 1
},
"ns" : "mkyong.users",
"name" : "__id__"
}]>
-
8.2 ** インデックスを作成するには、 `db.tablename.ensureIndex(column)`を使います。以下の例では、カラム “username”にインデックスが作成されています。
> db.users.ensureIndex({username:1})
> db.users.getIndexes()[ {
"v" : 1,
"key" : {
"__id" : 1
},
"ns" : "mkyong.users",
"name" : "__id__"
},
{
"v" : 1,
"key" : {
"username" : 1
},
"ns" : "mkyong.users",
"name" : "username__1"
}]....
** 8.3 ** インデックスを削除するには、 `db.tablename.dropIndex(column)`を使います。以下の例では、列 "username"のインデックスが削除または削除されています。
db.users.dropIndex({username:1})
{ “nIndexesWas” : 2, “ok” : 1 }
db.users.getIndexes()[ {
“v” : 1,
“key” : {
”
id” : 1
},
“ns” : “mkyong.users”,
“name” : ”
id__”
}]>
** 8.4 ** ユニークなインデックスを作成するには、 `db.tablename.ensureIndex({column}、{unique:true})`を使用します。以下の例では、カラム "username"にユニークなインデックスが作成されています。
db.users.ensureIndex({username:1},{unique:true});
db.users.getIndexes()[ {
“v” : 1,
“key” : {
”
id” : 1
},
“ns” : “mkyong.users”,
“name” : ”
id
”
},
{
“v” : 1,
“key” : {
“username” : 1
},
“unique” : true,
“ns” : “mkyong.users”,
“name” : “username
1″
}]….
10.ヘルプ
最後に、 `help()`を使ってMongoDBでの作業方法をガイドします。
help
– すべての利用可能なコマンド。
> help
db.help() help on db methods
db.mycoll.help() help on collection methods
rs.help() help on replica set methods
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
//...
10.2
db.help()
– dbのヘルプを表示します。
> db.help()
DB methods:
db.addUser(username, password[, readOnly=false])
db.auth(username, password)
db.cloneDatabase(fromhost)
db.commandHelp(name) returns the help for the command
db.copyDatabase(fromdb, todb, fromhost)
//...
10.3
db.collection.help()
– コレクション(テーブル)のヘルプを表示します。
> db.users.help()
DBCollection help
db.users.find().help() - show DBCursor help
db.users.count()
db.users.dataSize()
db.users.distinct( key ) - eg. db.users.distinct( 'x' )
db.users.drop() drop the collection
db.users.dropIndex(name)
//...
10.4
db.collection.function.help()
– 関数のヘルプを表示します。
> db.users.find().help()
find() modifiers
.sort( {...} )
.limit( n )
.skip( n )
.count() - total # of objects matching query, ignores skip,limit
.size() - total # of objects cursor would return, honors skip,limit
.explain([verbose])
//...
完了しました。 MongoDBコマンドのこの要約が他の人に役立つことを期待しています。