解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題: 發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。 所以大部分的解決說明都是這樣作:
chown -R mongod:mongod …

php 二維陣列進行假的 group by 資料篩選

有些時候我們在資料庫存取後會拿到一些很髒的資料,要作資料的篩選整理。
這次我們要做的動作就是,兩個相同格式的二為陣列要去過濾出重複的某個 key 值不要讓他一直出現:
例如:



$arr1[] = array(
 'order_id'=>'00001',
 'name'=>"james",
);
$arr1[] = array(
 'order_id'=>'00002',
 'name'=>"james 2",
);
$arr1[] = array(
 'order_id'=>'00003',
 'name'=>"james 3",
);


$arr2[] = array(
 'order_id'=>'00002',
 'name'=>"james 2",
);
$arr2[] = array(
 'order_id'=>'00003',
 'name'=>"james 3",
);
$arr2[] = array(
 'order_id'=>'00004',
 'name'=>"james 4",
);
我們分別拿到 arr1 和 arr2 的陣列資料,如果我們直接把他們兩個合併,那麼 00002 00003 就會被重複兩次。
這時候我們就可以簡單的呼叫一下這個 function 來作過濾
// 先合起來兩個陣列
$result = array_merge($arr1, $arr2);
// 進行過濾
$result_2 = group_by($result,'order_id');
這樣我們拿到的 result_2 就會過濾掉重複的 order_id 資料


這個 function 我會放在
https://github.com/gwolf0719/lib_functions
這個 github 中隨時更新

如果是使用 CodeIgniter 的話 可以把整個專案掛進去 application/libraries 中就可以直接取用摟

$this->arr->group_by($arr,$group_by,$where='');

 /**
     * 把記憶體當資料庫使用~ group_by
     * $arr 原始陣列
     * $group_by 要被 group_by 的欄位
     * $where參數請帶陣列
     * $where = array(
     *  col_1=>val_1,
     *  col_2=>val_2
     * );
     */

留言

這個網誌中的熱門文章

JavaScript 將 Array 和 Object 轉成 JSON

[JavaScript] 將 CSV 檔案轉換成 JSON 資料

讓 PHP 接收 post 的 json 資料