FreeStyleWiki

MongoDB

[MongoDB]

MongoDB

  環境構築

$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
$ echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
  • これだけで起動できるはずなのだが、過去に入れていたバージョンを削除したためいろいろトラブった
// pidファイルの削除
$ sudo rm -f /var/lib/mongodb/mongod.lock

// db関連ディレクトリの再作成
$ sudo rm -rf /var/lib/mongodb
$ sudo rm -rf /var/log/mongodb

$ sudo mkdir -p /var/lib/mongodb
$ sudo chown -R mongodb:mongodb /var/lib/mongodb

$ sudo mkdir -p /data/db
$ sudo chown -R mongodb:mongodb /data/db

$ sudo mkdir -p /var/log/mongodb
$ sudo chown -R mongodb:mongodb /var/log/mongodb
  • confファイルを用意する
    • fork: false にしないと起動できない
    • /var/log/mongodb をmongodbユーザに所属させないとログもなしに落ちる
$ sudo cat /etc/mongod.conf
systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: false
net:
   bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false
  • 起動
    • いろいろ面倒だ
$ sudo systemctl start mongod
$ sudo systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-09-29 11:56:29 JST; 16s ago

  クライアントのインストール

  • いい感じに起動

  JSONのインポート

  • mongoimportを使えばできる、が型指定などはCSVでないとできないようだ
$ mongoimport --db [db名] --collection [collection名] --type json --file XXX.json

JSONに_idというキーを用意しとけばそれがidになる。すでにある_idのデータを置換したければ

$ mongoimport --mode upsert --db [db名] --collection [collection名] --type json --file XXX.json

  全文検索

// コンソールから
> db.reviews.createIndex( { comments: "text" } )

// 闇キャラであいまい検索
> db.reviews.find( { $text: { $search: "闇キャラ" } } )

ちなみにcollectionにハイフンを混ぜた場合 db["sample-collection"] でアクセスできる