Hướng dẫn connect mongodb cmd

MongoDB là một hệ cơ sở dữ liệu NoSQL mã nguồn mở, được viết bằng C++, với nhiều tính năng tuyệt vời như map-reduce, auto sharding, mở rộng, tính sẵn sàng cao… Đây là một hệ cơ sở dữ liệu có nét khá giống cơ sở dữ liệu quan hệ - Quản lý bằng command line hoặc bằng GUI như RockMongo hoặc phpMoAdmin. Hiện tại MongoDB cũng được dùng trong một số dự án của các công ty lập trình bên cạnh MySQL, SQL Server hoặc Oracle.

Bài viết này sẽ đi sâu vào chi tiết cài đặt và sử dụng MongoDB. Do đó nếu cần tìm hiểu thêm về MongoDB và NoSQL, bạn có thể đọc thêm bài viết tại http://bigsonata.com/mongodb/

Trong phần dưới đây sẽ minh họa việc cài đặt trên Windows 7. Lưu ý là hiện tại MongoDB cung cấp hai phiên bản cài đặt dạng .MSI và gói cài dạng .ZIP. Bài viết sẽ minh họa gói cài trên tập tin .ZIP. Chỉ cần tải tập tin này về, giải nén, cấu hình thư mục data và bắt đầu nó với lệnh “mongod”.

1. Tải MongoDB

Bạn hãy tải nó từ http://www.mongodb.org/downloads. Chọn phiên bản 32-bit hoặc 64-bit. Tuy nhiên phiên bản mới nhất hiện tại 3.0 chỉ hỗ trợ 64-bit. Do đó nếu máy bạn nào chạy 32-bit có thể chọn các phiên bản cài đặt trước bằng cách nhấn liên kết Previous Production Releases. Giải nén vào thư mục nào đó chẳng hạn như D:mongodb.

2. Tổng quan về thư mục MongoDB

Trong MongoDB, nó chỉ chứa hơn mười tập tin thực thi (exe) trong thư mục bin. Điều này là sự thật, và đó là những tập tin cần thiết cho MongoDB.

Hướng dẫn connect mongodb cmd

Lưu ý là nên đưa thư mục bin của MongoDB vào biến môi trường của Windows để có thể truy cập các lệnh từ CMD một cách dễ dàng.

3. Tập tin cấu hình

Tạo tập tin cấu hình cho MongoDB có nội dung như sau, nó chỉ là tập tin văn bản thường. Ví dụ D:mongodbmongo.config

##store data here

dbpath=D:mongodbdata

##all output go here

logpath=D:mongodblogmongo.log

##log read and write operations

diaglog=3

MongoDB cần một thư mục (thư mục data) để lưu trữ dữ liệu của nó. Theo mặc định, nó sẽ lưu trữ trong "C:datadb", hãy tạo thư mục này bằng tay. MongoDB sẽ không tạo ra nó. Bạn cũng có thể chỉ định một thư mục data thay thế với tùy chọn --dbpath.

Lưu ý là bạn nên tạo thư mục data và log như đường dẫn của tập tin cấu hình.

4. Khởi động MongoDB server

Dùng lệnh mongod.exe --config d:mongodbmongo.config để khởi động MongoDB server.

Hướng dẫn connect mongodb cmd

5. Kết nối đến MongoDB

Sử dụng mongo.exe để kết nối đến máy chủ MongoDB đã khởi động.

Hướng dẫn connect mongodb cmd

6. Khởi động MongoDB như một dịch vụ trong Windows

Thêm MongoDB như dịch vụ trong Windows, để nó sẽ bắt đầu khởi động sau mỗi lần hệ thống khởi động lại. Để thực hiện, hãy cài đặt với tham số -install.

d:mongodbin> mongod --config D:mongodbmongo.config –install

Một dịch vụ của Windows có tên là "MongoDB" được tạo ra.

Hướng dẫn connect mongodb cmd

Để bắt đầu dịch vụ MongoDB

net start MongoDB

Để dừng dịch vụ MongoDB

net stop MongoDB

Để gỡ bỏ dịch vụ MongoDB

D:mongodbin>mongod –remove

7. Lỗi thường gặp

Cài đặt MongoDB như service trên Windows 8, nhưng báo lỗi " Access is denied."

C:Userslevientrinh>mongod --config D:mongodbmongo.config --install

Mon Jul 18 20:05:55.154 diagLogging level=3

Mon Jul 18 20:05:55.155 diagLogging using file D:mongodbdata/diaglog.51e54533

Mon Jul 18 20:05:55.155 Trying to install Windows service 'MongoDB'

Mon Jul 18 20:05:55.155 Error connecting to the Service Control Manager: Access

is denied. (5)

Để khắc phục, chạy Command Prompt với quyền quản trị - nhấn chuột phải vào biểu tượng CMD, chọn Run As Administrator.

Nói chung để tránh các lỗi khi chạy MongoDB trên CMD, hãy chạy CMD với quyền quản trị.

8. Tạo database hoặc table (collection)

Trong MongoDB, cả cơ sở dữ liệu và bảng được tạo ra tự động khi dữ liệu lần đầu tiên được đưa vào. Sử dụng use database-name, để chuyển sang cơ sở dữ liệu của bạn (ngay cả khi chúng được tạo hay chưa).

Trong ví dụ dưới đây, sau khi bạn chèn một record duy nhất, cơ sở dữ liệu "account" và bảng "users" được tạo.

C:Windowssystem32>mongo

MongoDB shell version: 2.6.8

connecting to: test

> use account

switched to db account

> db.users.insert({username:"levientrinh",password:"123456"})

WriteResult({ "nInserted" : 1 })

> db.users.find()

{ "_id" : ObjectId("54fa73f7461777b731321ada"), "username" : "levientrinh", "pas

sword" : "123456" }

Ba lệnh bạn nên biết.

show dbs - Liệt kê tất cả các cơ sở dữ liệu.

use dụng db_name - chuyển sang db_name.

show collections - liệt kê tất cả các bảng trong cơ sở dữ liệu được lựa chọn hiện tại.

Lưu ý: Trong MongoDB, collection có nghĩa là bảng trong SQL.

9. Chèn một record

Để chèn một record, sử dụng db.tablename.insert ({} dữ liệu) hoặc db.tablename.save ({} dữ liệu), không hiểu tại sao MongoDB tạo ra cả hai.

> db.users.save({username:"google",password:"google123"})

WriteResult({ "nInserted" : 1 })

> db.users.find()

{ "_id" : ObjectId("54fa73f7461777b731321ada"), "username" : "levientrinh", "pas

sword" : "123456" }

{ "_id" : ObjectId("54fa754a461777b731321adb"), "username" : "google", "password

" : "google123" }

10. Cập nhật một record

Để cập nhật một record, sử dụng db.tablename.update ({tiêu chí}, {$ set: {giả trị mới}}). Trong ví dụ dưới đây, mật khẩu của người dùng: "levientrinh" được cập nhật.

> db.users.update({username:"levientrinh"},{$set:{password:"hello123"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.users.find()

{ "_id" : ObjectId("54fa73f7461777b731321ada"), "username" : "levientrinh", "pas

sword" : "hello123" }

{ "_id" : ObjectId("54fa754a461777b731321adb"), "username" : "google", "password

" : "google123" }

11. Tìm record

- Tìm tất cả record trong bảng “users”

> db.users.find()

{ "_id" : ObjectId("54fa73f7461777b731321ada"), "username" : "levientrinh", "pas

sword" : "hello123" }

{ "_id" : ObjectId("54fa754a461777b731321adb"), "username" : "google", "password

" : "google123" }

- Tìm record nơi username là “google”

> db.users.find({username:"google"})

{ "_id" : ObjectId("54fa754a461777b731321adb"), "username" : "google", "password

" : "google123" }

- Tìm record nơi độ dài chuỗi trường username lớn hơn bằng 2

db.users.find({$where:"this.username.length<=2"})

- Tìm record có trường username tồn tại

> db.users.find({username:{$exists : true}})

12. Xóa record

Để xóa một record, sử dụng db.tablename.remove ({} tiêu chí). Trong ví dụ dưới đây, record của tên người dùng "google" sẽ bị xóa.

> db.users.remove({username:"google"})

WriteResult({ "nRemoved" : 1 })

> db.users.find()

{ "_id" : ObjectId("54fa73f7461777b731321ada"), "username" : "levientrinh", "pas

sword" : "hello123" }

Để xóa tất cả record từ một bảng, dùng db.tablename.remove()

Để xóa bảng, dùng db.tablename.drop()

13. Indexing

Index giúp bạn tăng tốc độ truy vấn dữ liệu.

- Liệt kê tất cả các index của bảng "users", theo mặc định cột "_id" luôn luôn là khóa chính và tạo ra tự động.

> db.users.getIndexes()

[

        {

                "v" : 1,

                "key" : {

                        "_id" : 1

                },

                "name" : "_id_",

                "ns" : "account.users"

        }

]

- Để tạo ra một index, sử dụng db.tablename.ensureIndex(tên cột). Trong ví dụ dưới đây, một index được tạo ra trên cột "username”.

> db.users.ensureIndex({username:1})

{

        "createdCollectionAutomatically" : false,

        "numIndexesBefore" : 1,

        "numIndexesAfter" : 2,

        "ok" : 1

}

- Để xóa một index, dùng db.tablename.dropIndex(tên cột). Trong ví dụ dới đây, index của cột “username” bị xóa bỏ.

> db.users.dropIndex({username:1})

{ "nIndexesWas" : 2, "ok" : 1 }

- Để tạo unique index, dùng db.tablename.ensureIndex({tên cột},{unique:true}). Trong ví dụ dưới đây, một unique index được tạo ra trên cột "username".

> db.users.ensureIndex({username:1},{unique:true});

{ "numIndexesBefore" : 2, "note" : "all indexes already exist", "ok" : 1 }

> db.users.getIndexes()

[

        {

                "v" : 1,

                "key" : {

                        "_id" : 1

                },

                "name" : "_id_",

                "ns" : "account.users"

        },

        {

                "v" : 1,

                "unique" : true,

                "key" : {

                        "username" : 1

                },

                "name" : "username_1",

                "ns" : "account.users"

        }

]

Bạn có thể tham khảo thêm về MongoDB từ tài liệu http://docs.mongodb.org/manual/

Lê Viễn Trình

Lê Viễn Trình