Các lệnh cơ bản MongoDB : MongoDB được biết đến là một cơ sở dữ liệu không dùng mô hình dữ liệu quan hệ kiểu sql, là một sự khai triển từNoSQL (not only SQL) cho việc lưu trữ dữ liệu document. Việc cài đặt MongoDB tương đối dễ dàng. Điều duy nhất bạn cần chú ý là thiết lập quyền truy cập cho thư mục chứa data.
Sử dụng mongodb cũng chỉ cần thông qua một số câu lệnh đơn giản, chủ yếu là insert, update, find và remove.
1. Kết nối đến mongodb.
Tương tự khi sử dụng sql thì phải kết nối đến database, mongodb cũng vậy:
$m = new Mongo(“mongodb://${username}:${password}@localhost”);
Lệnh này khởi tạo kết nối đến server cài đặt mongodb, mặc định nếu không có tham số sẽ là localhost với cổng port = 27017.
Tiếp theo là lệnh chọn database
$db = $m->google; //Với database có tên “google”;
Tiếp theo chọn collection (collection tương tự như chọn một bảng trong cơ sở dữ liệu quan hệ sql):
$collection = $db->user;
Vậy là quá trình kết nối đã hoàn tất, để nắm rõ hơn quá trình này thì các bạn có thể truy cập trực tiếp vào trang chủ php.net theo đường dẫn: http://www.php.net/manual/en/mongo.connecting.php
2. Lệnh insert:
Lệnh được sử dụng để thêm dữ liệu mới vào collection tương tự như lệnh insert trong sql
Ví dụ: thêm một bản ghi về user vào collection user đã kết nối ở trên:
$aryUser = array(‘username’=>’google’, ‘age’=>27, ‘phone’=>’098888888’);
$collection ->insert($aryUser);
3. Lệnh update:
Khi muốn thay đổi thong tin của một bản ghi thì các bạn có thể dùng lệnh update, tương tự lệnh update trong sql
Ví dụ: thay đổi tuổi của user có username là google:
$aryUser = array(‘username’=>’google’);
$set = array( ‘$set’ => array(‘age’ => 28) );
$collection->update($aryUser, $set);
4. Lệnh find:
Được dùng để truy vấn vào collection để lấy các bản ghi cần thiết.
Ví dụ: lấy thông tin user có username là ‘google’
$infoUser = $collection->find(array(‘username’=>’google’));
foreach ($infoUser as $user) {
print_r($user);
}
Kết quả sẽ là:
Array ( [_id] => MongoId Object ( [$id] => … ) [username’] => ’google’ [age’] => 28 [phone]=>098888888)
Trên đây là một số lệch cơ bản hay dùng khi thao tác với cơ sở dữ liệu NoSQL MongoDB, để nắm được rõ hơn cá lệnh khi chuyển từ SQL sang MongoDB các bạn có thể tham khảo bảng sau:
SQL Statement
| Mongo Statement |
CREATE TABLE USERS (a Number, b Number) | implicit; can also be done explicitlywithdb.createCollection(“mycoll”) |
ALTER TABLE users ADD … | implicit |
INSERT INTO USERS VALUES(3,5) | db.users.insert({a:3,b:5}) |
SELECT a,b FROM users | db.users.find({}, {a:1,b:1}) |
SELECT * FROM users | db.users.find() |
SELECT * FROM users WHERE age=33 | db.users.find({age:33}) |
SELECT a,b FROM users WHERE age=33 | db.users.find({age:33}, {a:1,b:1}) |
SELECT * FROM users WHERE age=33 ORDER BY name | db.users.find({age:33}).sort({name:1}) |
SELECT * FROM users WHERE age>33 | db.users.find({age:{$gt:33}}) |
SELECT * FROM users WHERE age!=33 | db.users.find({age:{$ne:33}}) |
SELECT * FROM users WHERE name LIKE “%Joe%” | db.users.find({name:/Joe/}) |
SELECT * FROM users WHERE name LIKE “Joe%” | db.users.find({name:/^Joe/}) |
SELECT * FROM users WHERE age>33 AND age<=40 | db.users.find({‘age':{$gt:33,$lte:40}}) |
SELECT * FROM users ORDER BY name DESC | db.users.find().sort({name:-1}) |
SELECT * FROM users WHERE a=1 and b=’q’ | db.users.find({a:1,b:’q’}) |
SELECT * FROM users LIMIT 10 SKIP 20 | db.users.find().limit(10).skip(20) |
SELECT * FROM users WHERE a=1 or b=2 | db.users.find( { $or : [ {a:1} , {b:2} ] } ) |
SELECT * FROM users LIMIT 1 | db.users.findOne() |
SELECT order_id FROM orders o, order_line_items li WHERE li.order_id=o.order_id AND li.sku=12345 | db.orders.find({“items.sku”:12345},{_id:1}) |
SELECT customer.name FROM customers,orders WHERE orders.id = “q179″ AND orders.custid = customer.id | var o = db.orders.findOne({_id:”q179″});var name = db.customers.findOne({_id:o.custid}) |
SELECT DISTINCT last_name FROM users | db.users.distinct(‘last_name’) |
SELECT COUNT(*y)FROM users | db.users.count() |
SELECT COUNT(*y)FROM users where AGE > 30 | db.users.find({age: {‘$gt': 30}}).count() |
SELECT COUNT(AGE) from users | db.users.find({age: {‘$exists': true}}).count() |
CREATE INDEX myindexname ON users(name) | db.users.ensureIndex({name:1}) |
CREATE INDEX myindexname ON users(name,ts DESC) | db.users.ensureIndex({name:1,ts:-1}) |
EXPLAIN SELECT * FROM users WHERE z=3 | db.users.find({z:3}).explain() |
UPDATE users SET a=1 WHERE b=’q’ | db.users.update({b:’q’},{$set:{a:1}},false,true) |
UPDATE users SET a=a+2 WHERE b=’q’ | db.users.update({b:’q’},{$inc:{a:2}},false,true) |
DELETE FROM users WHERE z=”abc” | db.users.remove({z:’abc’}); |