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コマンドのこの要約が他の人に役立つことを期待しています。