「MongoDB」の版間の差分
ナビゲーションに移動
検索に移動
(→検索) |
(→検索) |
||
292行目: | 292行目: | ||
{key2:value2} | {key2:value2} | ||
]} | ]} | ||
+ | | | ||
+ | |- | ||
+ | | or | ||
+ | | {$or:[ | ||
+ | {key1:value1}, | ||
+ | {key2:value2} | ||
+ | ]} | ||
+ | | | ||
+ | |- | ||
+ | | null | ||
+ | | {key:null} | ||
+ | 以下が検索される | ||
+ | 1.データ型がNull | ||
+ | 2.フィールドなし | ||
+ | 3.undefined | ||
+ | | | ||
+ | |- | ||
+ | | フィールドの存在有無($exists) | ||
+ | | { key: {$exists: false}} | ||
+ | | | ||
+ | |- | ||
+ | | データ型を指定($type) | ||
+ | | {key:{$type:"null"}} | ||
+ | // Null型を指定して検索 | ||
| | | | ||
|- | |- |
2021年5月16日 (日) 15:04時点における版
目次
MongoDB
ドキュメント指向データベース
スキーマレス
- スキーマを定義しなくても利用できる
- スキーマレスのため保守性が高い
- JSON方式でデータを保持
- テーブルのことはコレクションと呼ぶ
パフォーマンス
- 機能制限により、高パフォーマンスを実現
- トランザクションがない
- 処理速度がかなり高速
- 大量データの高速処理に向く
- スケールアウトが簡単な設定で可能
操作感
- RDBと似た操作
- 複雑な検索条件を利用できる
インストール
Ubuntu
ubuntu@puli-mon:~$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" : ubuntu@puli-mon:~$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - OK ubuntu@puli-mon:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list ubuntu@puli-mon:~$ sudo apt-get update ubuntu@puli-mon:~$ sudo apt-get install -y mongodb-org
ディレクトリ
種類 | 場所 | 備考 |
---|---|---|
データ | /var/lib/mongodb | |
ログ | /var/log/mongodb | |
設定 | /etc/mongod.conf |
開始
ubuntu@puli-mon:/etc$ sudo systemctl start mongod
- 失敗する場合
sudo systemctl daemon-reload
リモートホストから接続
- デフォルトでは、localhostからのみ接続可能なため、bindIp の行を変更
- $ sudo vi /etc/mongod.conf
# network interfaces net: port: 27017 # bindIp: 127.0.0.1 bindIp: 0.0.0.0
monogoシェルの実行
ubuntu@puli-mon:/etc$ mongo MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/? : --- >
GUI
MongaDB Compass
Robo 3T
- https://robomongo.org/download
- Only 3T
- 起動
データベース
データベース作成
- use で作成
> use testdb switched to db testdb
- db。dろpDatabase() でカレントDBを削除
コレクションを作成
> db.createCollection("testDoc") { "ok" : 1 }
- 一覧を確認
> show dbs admin 0.000GB config 0.000GB local 0.000GB testdb 0.000GB
ドキュメントの登録
- testDocは、コレクション
> db.testDoc.insertOne( ... {name:"Foo",value:"Bar"} ... ) { "acknowledged" : true, "insertedId" : ObjectId("609f57392efac2b731a534eb") }
検索
- find
> db.testDoc.find() { "_id" : ObjectId("609f57392efac2b731a534eb"), "name" : "Foo", "value" : "Bar" }
DB統計
> db.stats() { "db" : "testdb", "collections" : 1, // コレクション数 "views" : 0, "objects" : 1, "avgObjSize" : 51, "dataSize" : 51, // 圧縮前データサイズ "storageSize" : 20480, "indexes" : 1, // インデックス数 "indexSize" : 20480, // インデックスデータ量 "totalSize" : 40960, "scaleFactor" : 1, "fsUsedSize" : 2561937408, "fsTotalSize" : 20629221376, "ok" : 1 }
コレクション
種類 | コマンド | 例 |
---|---|---|
コレクションの作成 | db.createCollection(コレクション名) | db.createCollection("testCollection") |
コレクションの一覧表示 | show collections | |
統計情報表示 | db.collection.stats() | |
コレクションの削除 | db.collection.drop() | db.testCollection.drop |
Cappedコレクション
- コレクションに入れられるデータの上限を設定
- データ量が上限になると、古いドキュメントから削除されていく
- レプリカセットでは、Cappedコレクションを使ってデータを同期している
- createCollection のオプションを変更して作成
db.createCollection( "コレクション名", [capped: true, size: データ上限(バイト)サイズ] )
登録
方法 | コマンド | 例 |
---|---|---|
1件登録 | db.collection.insertOne({...}) | db.testCollection.insertOne({key:"1",value:"a"}) |
複数登録 | db.collection.insertMany([
{...}, {...} ]) |
db.testCollection.insertMany([
{key:2,value:"b"}, {key:3,value:"c"} ]) |
検索
方法 | コマンド | 例 |
---|---|---|
全件 | db.collection.find() | db.testCollection.find() |
フィールドを指定 | db.collection.find(
{検索条件}, {key1:0,kye2:1,...} ) //key1を非表示、key2を表示 |
db.testCollection.find(
{key:2}, {_id:0,key:1,value:1} ) |
完全一致 | {key:value} | |
部分一致 | {key:/value/} | |
前方一致 | {key:/^value/} | |
後方一致 | {key:/value$/} | |
以下 | {key:{$lte:value}} | |
未満 | {key:{$lt:value}} | |
以上 | {key:{$gte:value}} | |
より大きい | {key:{$gt:value}} | |
範囲指定 | {key:{$gte:value1, $lte:value2}} | |
and | {$and:[
{key1:value1}, {key2:value2} ]} |
|
or | {$or:[
{key1:value1}, {key2:value2} ]} |
|
null | {key:null}
以下が検索される 1.データ型がNull 2.フィールドなし 3.undefined |
|
フィールドの存在有無($exists) | { key: {$exists: false}} | |
データ型を指定($type) | {key:{$type:"null"}}
// Null型を指定して検索 |
|
© 2006 矢木浩人