Thứ Tư, 16 tháng 8, 2017

Các lệnh cơ bản mongodb

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 usersdb.users.find({}, {a:1,b:1})
SELECT * FROM usersdb.users.find()
SELECT * FROM users WHERE age=33db.users.find({age:33})
SELECT a,b FROM users WHERE age=33db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY namedb.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33db.users.find({age:{$gt:33}})
SELECT * FROM users WHERE age!=33db.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<=40db.users.find({‘age’:{$gt:33,$lte:40}})
SELECT * FROM users ORDER BY name DESCdb.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 20db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2db.users.find( { $or : [ {a:1} , {b:2} ] } )
SELECT * FROM users LIMIT 1db.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 usersdb.users.distinct(‘last_name’)
SELECT COUNT(*y)FROM usersdb.users.count()
SELECT COUNT(*y)FROM users where AGE > 30db.users.find({age: {‘$gt’: 30}}).count()
SELECT COUNT(AGE) from usersdb.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=3db.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’});

Share This!


Không có nhận xét nào:

Đăng nhận xét