MongoDB

MongoDBとは

インストール

mongodb(v4.0.5)のコンソールからの使い方色々

Excel, Oracle, MongoDB, Object の大まかな比較

Excel Oracle MongoDB Object
ブック Schema Database 特になし
シート Table Collection 特になし
Row Document Object群
Column Field Key
セル Field Value Value

起動方法

$ mongod // mongodbが起動する
$ CNTL-C // mongodbを停止する
// か,
$ sudo service mongod start
$ sudo service mongod stop

コンソールからのアクセス方法

$ mongo // アクセスして,
> exit // 終了.
bye

dbの作成&中身を見る

> use sample // sampleというdbを作成 or そこにアクセスする
switched to db sample
> show dbs // 存在するdbの種類を見せてくれる
admin   0.000GB
local   0.000GB
sample  0.000GB // こんな感じで帰ってくる
> db.stats() // これで中身の情報を見せてくれる

Collection(ディレクトリ・フォルダみたいなもの)の作成

> db.createCollection("products") // productsというCollectionを作成する
{ "ok" : 1}
> show collections
products

dbをコピー&削除する

> db.copyDatabase('sample', 'new_sample') // mongodb4.0で非推奨になった
{ "ok" : 1}
> show dbs
admin       0.000GB
local       0.000GB
new_sample  0.000GB
sample      0.000GB
> use new_sample
> db.dropDatabase()
{ "dropped" : "new_sample", "ok" : 1 }
> show dbs
admin       0.000GB
local       0.000GB
sample      0.000GB

Collectionの名前変更

> db.createCollection('pricee')
{ "ok" : 1 }
> show collections
pricee
products
> db.pricee.renameCollection('price', true) // ここのtrueは名前変更前のcollectionは削除するということ
{ "ok" : 1 }
> show collections
price
products

Collectionの削除

> db.price.drop()
true
> show collections
products

CollectionにDocumentを追加

> db.products.insert({name: 'pen', price: 150})
WriteResult({ "nInserted" : 1 })

オペレーターの種類

オペレーター 意味
$eq =
$gt >
$gte >=
$lt <
$lte <=
$ne !=
$regex 正規表現

Documentを表示&検索

> db.products.find() // collectionの中身のdocumentを全部表示
{ "_id" : ObjectId("5c2d4199c5195731b5149377"), "name" : "pen", "price" : 150 }
> db.products.find({price: {$gt: 100}}) // priceが100より大きいものを検索
{ "_id" : ObjectId("5c2d4199c5195731b5149377"), "name" : "pen", "price" : 150 }
> db.products.find({price: {$gt: 200}}) // priceが200より小さいものを検索
>
> db.characters.find().pretty() // charactersの中身を下のように表現してくれる
{
  "_id" : ObjectId("5c280309156ceb35b1564cff"),
  "name" : "sola",
  "age" : 33,
  "__v" : 0
}

Document内容の更新

> db.products.update({name: {$eq: 'pen'}}, {$set: {price: 200}}, {upsert: false, multi: true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.products.find()
{ "_id" : ObjectId("5c2d4199c5195731b5149377"), "name" : "pen", "price" : 200 }

Documentの削除

> db.products.remove({name: {$eq: 'pen'}})
WriteResult({ "nRemoved" : 1 })
> db.products.find()
>