30 lệnh thao tác với MongoDB

1. Kiểm tra phiên bản sử dụng MongoDB

mongo

Lệnh này cũng giúp bạn vào dấu nhắc lệnh bắt đầu thao tác với MongoDB. Lệnh này kết nối mặc định với localhost và port 27017. Nếu bạn muốn đặc tả rõ ràng sử dụng lệnh: mongo –port 123 –host 192.168.2.60

2. Show tất cả db

show dbs

3. Chuyển sang 1 db mới (mydb)

use mydb

4. Kiểm tra DB đang thao tác

db

5. Thêm một collection testData vào DB

> j={name:”mongo”}
{ “name” : “mongo” }
> k={x:3}
{ “x” : 3 }

Khi này MongoDB mới thực sự tạo DB mydb.

6. Show toàn bảng trong MongoDB

db.testData.find()

Ta có thể đặc tả rõ hơn câu tìm kiếm: db.testData.find({x:3})

Giới hạn số lượng record trả về: db.testData().limit(3)

7. CRUD với MongoDB

Thêm Insert (Create)

Thêm 1 mảng:

var mydocuments =
    [
      {
        item: "ABC2",
        details: { model: "14Q3", manufacturer: "M1 Corporation" },
        stock: [ { size: "M", qty: 50 } ],
        category: "clothing"
      },
      {
        item: "MNO2",
        details: { model: "14Q3", manufacturer: "ABC Company" },
        stock: [ { size: "S", qty: 5 }, { size: "M", qty: 5 }, { size: "L", qty: 1 } ],
        category: "clothing"
      }
];
db.inventory.insert( mydocuments );

Đọc từ Mongo (READ)

Sử dụng lệnh: db.collection.find()

Có thể sử dụng toán tử lọc: db.collection.find({<field>:<value>})

db.inventory.find( { type: { $in: [ 'food', 'snacks' ] } } )

=> Lấy tất cả loại có giá trị là food hoặc snacks.

Có sự khác biệt giữa toán tử $in (giá trị) và $or (biểu thức)

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
=> Lựa chọn sp có số lượng <20 hoặc giá = 10.
db.inventory.find( { type: 'food', price: { $lt: 9.95 } } )
=> Toán tử AND: loại food và giá nhỏ hơn 9.95
db.inventory.find(
   {
     type: 'food',
     $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
   }
)

So sánh đúng:

db.inventory.find(
    {
      producer:
        {
          company: 'ABC123',
          address: '123 Street'
        }
    }
)

So sánh chứa trong (include text)

db.inventory.find( { 'producer.company': 'ABC123' } )
=> Lựa chọn field producer có chứa field company và giá trị là ABC123

Query từ 1 mảng:

{ _id: 5, type: "food", item: "aaa", ratings: [ 5, 8, 9 ] }
{ _id: 6, type: "food", item: "bbb", ratings: [ 5, 9 ] }
{ _id: 7, type: "food", item: "ccc", ratings: [ 9, 5, 8 ] }
db.inventory.find( { ratings: [ 5, 8, 9 ] } )
=> Lấy chính xác trả về đúng item aaa
db.inventory.find( { ratings: 5 } )
=>Trả về tất cả sp có rating bằng 5
db.inventory.find( { 'ratings.0': 5 } )
=> Trả về sp có rating là 5 và ở vị trí đầu tiên. Trả về aaa và bbb
db.inventory.find( { ratings: { $elemMatch: { $gt: 5, $lt: 9 } } } )
=> Trả về sp có rating lớn hơn 5 và nhỏ hơn 9. Sử dụng toán tử $elemMatch.
Trả về aaa và ccc vì có phần tử 8 (5<8<9)
db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } )

=> trả về cả 3 sp.

Xem thêm tại: http://docs.mongodb.org/manual/tutorial/query-documents/

Sửa update()

db.inventory.update(
    { item: "MNO2" },
    {
      $set: {
        category: "apparel",
        details: { model: "14Q3", manufacturer: "XYZ Company" }
      },
      $currentDate: { lastModified: true }
    }
)
=> điều kiện item==MNO2
Toán tử $set: thiết lập các thay đổi.
Toán tử $currentDate có cập nhật ngày sửa bản tin.

db.inventory.update(
  { item: "ABC1" },
  { $set: { "details.model": "14Q2" } }
)
=> Cập nhật filed model chứa trong field details
db.inventory.update(
   { category: "clothing" },
   {
     $set: { category: "apparel" },
     $currentDate: { lastModified: true }
   },
   { multi: true }
)
=> Cập nhật nhiều document (row) với catalogry là clothing thành apparel.


Mặc định lệnh update sẽ cập nhật sửa đổi cho document nhưng nếu ko tìm thấy match nó sẽ không làm gì. Trong MongoDB bạn có tùy chọn upsert: true => điều này có nghĩa nếu ko tìm thấy bản tin nào thỏa để sửa đổi, lệnh này sẽ insert bản tin này vào.

db.inventory.update(
   { item: "TBD1" },
   {
     item: "TBD1",
     details: { "model" : "14Q4", "manufacturer" : "ABC Company" },
     stock: [ { "size" : "S", "qty" : 25 } ],
     category: "houseware"
   },
   { upsert: true }
)

Xem thêm tại: http://docs.mongodb.org/manual/tutorial/modify-documents/

Delete remove()

db.inventory.remove({})
=> Xóa tất cả các record (document)
db.inventory.remove( { type : "food" } )
=> Xóa tất cả các record có type == food
db.inventory.remove( { type : "food" }, 1 )
=> remove 1 document có type==food