MongoDB

MongoDB メモ

More than 5 years have passed since last update.

▼MongoDBのインストール

$ brew install mongodb

手動で起動

$ mongod &

▼mongooseをインストール

$ npm install mongoose

手動で起動

$ mongo

▼マニュアル
http://docs.mongodb.org/manual/

▼参考
MongoDBの基本 node.jsでMongoDBを扱ってみる - エウレカ技術部
http://d.hatena.ne.jp/eureka_tech/20110712/1310472120

$ mongo #起動
MongoDB shell version: 1.6.3
connecting to: test

MongoDB はデータベースもコレクションも存在しなければ自動作成してくれる

> db = connect("localhost/test") #  使うデータベースをtestに指定

▼DBに挿入

> db.users.save({username:"mizchi",password:"password",params:["A","B"]});  #usersのコレクション挿入してみる
> db.users.save({username:"koni",password:"konisimple",params:["B","C"]} ) #もうひとつ挿入

▼総数をみて確認

> db.users.find().count() # 中身が挿入されたか、総数をみて確認
2

▼空のクエリで検索(全部とってくる)

> db.users.find() # 空のクエリで検索(全部とってくる場合)
{ "_id" : ObjectId("4e077d13984bb3412af1a0d1"), "username" : "mizchi", "password" : "password", "params" : [ "A", "B" ] }
{ "_id" : ObjectId("4e077deb984bb3412af1a0d2"), "username" : "koni", "password" : "konisimple", "params" : [ "B", "C" ] }

▼クエリで条件指定して検索

> db.users.find({username:"koni"})  # クエリで条件指定して検索 username == "koni"のものq   
{ "_id" : ObjectId("4e077deb984bb3412af1a0d2"), "username" : "koni", "password" : "konisimple", "params" : [ "B", "C" ] }

▼条件に合致したものを削除

> db.users.remove( { username : "mizchi" } )

▼空にする

> db.users.drop() # 空にする
true
> db.users.find().count() # 総数をみて確認
0

▼データベースの一覧を表示

> show dbs

▼使用中のDB名を表示

> db

▼使用するDB名を指定

> use mydb

▼ 現在のデータベースに存在するコレクションを確認

> show collections
system.indexes
users

▼データを取得>データを追加>保存>確認

> var mongo = db.things.findOne({name:"mongo"});  # データを取得
> print(tojson(mongo)); # 出力
{"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo"} 
> mongo.type = "database";  # データ追加
database 
> db.things.save(mongo); # 保存
> db.things.findOne({name:"mongo"}); # 確認
{"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo" , "type" : "database"} 

参考
Mongoでのデータ更新 - Docs-Japanese - 10gen Confluence
https://wiki.10gen.com/pages/viewpage.action?pageId=18907286

〜うまく動かすMongoDB〜仕組みや挙動を理解する - doryokujin's blog
http://doryokujin.hatenablog.jp/entry/20110519/1305737343

▼DBのステータスを確認

> db.stats()
{
    "db" : "test",
    "collections" : 4,
    "objects" : 11,
    "avgObjSize" : 53.81818181818182,
    "dataSize" : 592,
    "storageSize" : 20480,
    "numExtents" : 4,
    "indexes" : 2,
    "indexSize" : 16352,
    "fileSize" : 201326592,
    "nsSizeMB" : 16,
    "ok" : 1
}

▼メモリーリークが起こってないか確認

> db.serverStatus().mem
{
    "bits" : 64,
    "resident" : 61,
    "virtual" : 2802,
    "supported" : true,
    "mapped" : 160,
    "mappedWithJournal" : 320
}