Header Ads Widget

Tổng hợp các lệnh xử lý trong Mongodb

Tổng hợp các lệnh xử lý trong Mongodb


Khởi tạo

Để tạo được Database + User mới ta cần đăng nhập vào tài khoản Admin
Thực hiện các lệnh sau để vào cửa sổ lệnh của Mongo:
mongo

Hoặc nếu lệnh sau nếu có port: 12345

mongo -port 12345

Chuyển sang DB Admin:

use admin

db.auth("admin", "ADMIN_PASSWORD") 

Tiếp tục chuyển sang DB muốn tạo:

Ví dụ tạo DB lienvu_db

use lienvu_db
Tạo User mới và quyền truy cập dữ liệu
db.createUser({
    user: 'lienvu_user',
    pwd: 'lienvu_pass',
    roles: [{ role: 'readWrite', db:'lienvu_db'}]
})
Đăng nhập nếu có mật khẩu
db.auth("lienvu_user", "lienvu_pass") 

Kiểm tra tài khoản, mật khẩu mới đã hoạt động hay chưa
mongo -u lienvu_user -p lienvu_pass127.0.0.1/lienvu_db

Đăng nhập  nhập từ command line

mongo -u USERNAME -p --authenticationDatabase DB 
Kiểm tra kết nối từ localhost
mongo -u admin -p --authenticationDatabase admin --host localhost

Kiểm tra kết nối từ 1 IP

mongo -u admin -p --authenticationDatabase admin --host 123.4.5.6

Đăng nhập với tài khoản admin vào database Admin

mongo -port 16542 -u admin -p <PASWORD> --authenticationDatabase admin 

Để kill tất cả các operation đang chạy trên 10 giây: 

db.currentOp({

  active: true,

  secs_running: { $gte: 10 }

}).inprog.forEach(op => {

  print("Kill:", op.opid, op.ns, op.secs_running + "s");

  db.killOp(op.opid);

});

Lệnh thao tác trong Database

Tạo index cho bảng messages

db.messages.createIndex( { page_id: 1, comment_id: 1 }, { name: "page_id_1_comment_id_1" } ) 

Xử lý lỗi

Code tìm truy vấn mongo nào đang bị chậm
const {
    MongoClient
} = require("mongodb");
const uri = "mongodb://admin:<PASWORD>@127.0.0.1:<PORT>/admin?authSource=admin";

function buildQuery(op) {
    const c = op.command || {};
    if (c.find) {
        return `db.${c.find}.find(${JSON.stringify(c.filter || {})})`;
    }
    if (c.count) {
        return `db.${c.count}.count(${JSON.stringify(c.query || {})})`;
    }
    if (c.aggregate) {
        return `db.${c.aggregate}.aggregate(${JSON.stringify(c.pipeline || [])})`;
    }
    if (c.update) {
        return `db.${c.update}.update(${JSON.stringify(c.updates || [])})`;
    }
    if (c.delete) {
        return `db.${c.delete}.delete(${JSON.stringify(c.deletes || [])})`;
    }
    if (c.insert) {
        return `db.${c.insert}.insert(...)`;
    }
    return JSON.stringify(c);
}
async function showSlowQueries() {
    const client = new MongoClient(uri);
    try {
        await client.connect();
        const adminDb = client.db("admin");
        const result = await adminDb.command({
            currentOp: 1,
            active: true,
            secs_running: {
                $gte: 1
            },
        });
        const rows = (result.inprog || []).filter((op) => op.secs_running != null).sort((a, b) => Number(b.secs_running) - Number(a.secs_running)).slice(0, 20).map(op => ({
            opid: op.opid,
            seconds: Number(op.secs_running),
            ns: op.ns,
            query: buildQuery(op)
        }));
        console.table(rows);
    } catch (error) {
        console.error("Lỗi:", error.message);
    } finally {
        await client.close();
    }
}
showSlowQueries();

Khi cài đặt lỗi thực hiện xóa đi và cài đặt lại

Chạy lệnh xóa
sudo apt-get purge mongodb-org*
Cài đặt lại
sudo apt-get install mongodb
Kiểm tra version đã cài
mongo --version