Sau khi kết nối vào CSDL trong MongoDB, bạn cần làm việc với Collection. Vậy hãy cũng tìm hiểu cách thức làm việc với Collection trong MongoDB như thế nào.
Tạo Collection
Sử dụng câu lệnh db.createCollection() để tạo Collection trong mongo shell
Cú pháp:
db.createCollection(<name>,
{
capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>
} )
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | Tên của Collection cần tạo |
capped | boolean | Không bắt buộc. Để tạo Collection có giới hạn nếu giá trị là true (đúng). Nếu xác định là true, bạn cũng phải thiết lập giá trị lớn nhất của kích thước trong trường size. |
size | number | Không bắt buộc. Xác định giá trị lớp nhất tính theo byte để giới hạn cho Collection. Khi Collection đạt đến kích thước lớn nhất thì MongoDB sẽ xoá những document (tài liệu) cũ để tạo khoảng trống cho document mới. |
max | number | Không bắt buộc. Xác định số lượng lớn nhất của document được phép trong giới hạn Collection. Để giới hạn Collection thì nên sử dụng thuộc tính này để xác định giới hạn. Nếu một Collection đạt đến kích thước giới hạn số lượng document tối đa, MongoDB sẽ xoá các document cũ để đảm bảo giới hạn tối đa đã được xác định |
autoIndexId | boolean | Không bắt buộc. Xác định là false để vô hiệu hoá việc tự động đánh index (chỉ mục) cho trường _id. Bắt đầu từ MongoDB 4.0 trở về sau, bạn không thể thiết lập được tuỳ chọn autoIndexId là false khi tạo Collection trong database |
usePowerOf2Sizes | boolean | Không bắt buộc. Chỉ có sẵn trong bộ lưu trữ MMAPv1 |
noPadding | boolean | Không bắt buộc. Chỉ có sẵn trong bộ lưu trữ MMAPv1 Giá trị mặc định là false |
storageEngine | document | Không bắt buộc. Chỉ có sẵn trong bộ lưu trữ WiredTiger |
validator | document | Không bắt buộc. Cho phép xác định các quy tắc hoặc biểu thức xác nhận hợp lệ cho Collection |
validationLevel | string | Không bắt buộc. Xác định cách MongoDB áp dụng quy tắc hợp lệ cho các document đã tồn tại trong lúc cập nhật |
validationAction | string | Không bắt buộc. Xác định xem sẽ thông báo lỗi hay đưa ra cảnh báo khi các document không hợp lệ được thêm vào |
indexOptionDefaults | document | Không bắt buộc. Cho phép người dùng xác định cấu hình mặc định cho index (chỉ mục) trong lúc tạo Collection |
viewOn | string | Không bắt buộc. Tên của Collection hoặc khung nhìn (view) nguồn trong lúc tạo khung nhìn. Tên không phải là namespace (không gian tên) đầy đủ của Collection hay khung nhìn, tức là không bao gồm tên CSDL như trong cùng một CSDL trong lúc khung nhìn được tạo |
pipeline | array | Không bắt buộc. Là một mảng tập hợp các đoạn đường ống. Câu lệnh db.createView() tạo khung nhìn bằng cách áp dụng các đoạn đã được chỉ định cho Collection hoặc khung nhìn trong thuộc tính viewOn |
collation | document | Không bắt buộc. Xác định đối chiếu mặc định cho Collection |
writeConcer | document | Không bắt buộc. Một document diễn tả mối liên hệ bằng văn bản cho các thao tác. Thường bỏ qua thuộc tính này, sử dụng chế độ ghi mặc định |
Ví dụ:
- Tạo Collection đơn giản
db.createCollection("students")
- Tạo Collection với xác định kích thước tối đa là 1MB
db.createCollection("students", { capped: true, size: 1024 })
- Tạo Collection với xác định số lượng document (tài liệu) tối đa là 100
db.createCollection("students", { max: 100 })
Chèn dữ liệu vào trong Collection
Để chèn dữ liệu vào trong Collection chúng ta có thể sử dụng các phương thức insertOne(), insertMany(), insert(), save()
Cú pháp:
db.COLLECTION_NAME.insertOne(document)
db.COLLECTION_NAME.insertMany([document])
db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)
Ví dụ:
- Chèn một tài liệu (document) vào trong Collection
- Sử dụng phương thức insertOne()
db.students.insertOne({student_id: "S2020.0016", first_name: "Phạm", middle_name: "Văn", last_name: "Được", birthday: "11/11/2002", gender: "M", gpa: 9, note: ""})
- Sử dụng phương thức insert()
db.students.insert({student_id: "S2020.0017",first_name: "Nguyễn",middle_name: "Văn",last_name: "Nam",birthday: "12/12/2002",gender: "M", gpa: 7.5, note: ""})
- Sử dụng phương thức save()
db.students.save({student_id:"S2020.0018",first_name:"Hoàng",middle_name:"Văn",last_name:"Định",birthday:"02/12/2002",gender:"M",gpa:5.5,note:""})
- Sử dụng phương thức insertOne()
- Chèn nhiều tài liệu vào trong Collection
- Sử dụng phương thức insertMany()
db.students.insertMany([{ student_id: "S2020.0019", first_name: "Trần", middle_name: "Văn", last_name: "Hải", birthday: "10/07/2002", gender: "M", gpa: 8, note: ""}, { student_id: "S2020.0020", first_name: "Phạm", middle_name: "Thị", last_name: "Hương", birthday: "12/06/2002", gender: "F", gpa: 8.5, note: ""}])
- Sử dụng phương thức insert()
db.students.insert([{ student_id: "S2020.0021", first_name: "Trần", middle_name: "Văn", last_name: "Quang", birthday: "03/07/2002", gender: "M", gpa: 6.5, note: ""}, { student_id: "S2020.0022", first_name: "Nguyễn", middle_name: "Thị", last_name: "Hương", birthday: "12/09/2002", gender: "F", gpa: 6, note: ""}])
- Sử dụng phương thức save()
db.students.save([{ student_id: "S2020.0023", first_name: "Hoàng", middle_name: "Văn", last_name: "Hoà", birthday: "10/03/2002", gender: "M", gpa: 9.5, note: ""}, { student_id: "S2020.0024", first_name: "Trần", middle_name: "Thị", last_name: "Hoa", birthday: "01/04/2002", gender: "F", gpa: 7, note: ""}])
- Sử dụng phương thức insertMany()
Gợi ý: Để sử dụng linh hoạt và hiệu quả chúng ta nên sử dụng phương thức insert() để chèn dữ liệu vào Collection.
Truy vấn dữ liệu từ Collection
Để truy vấn lấy dữ liệu từ Collection của MongoDB bạn có thể sử dụng phương thức find()
Cú pháp
db.COLLECTION_NAME.find()
Ví dụ
db.students.find()
Để hiển thị kết quả trả về có định dạng bạn có thể sử dụng thêm phương thức pretty()
db.students.find().pretty()
Cập nhật tài liệu
MongoDB sử dụng 2 phương thức update() và save() để thực hiện cập nhật tài liệu ở bên trong một Collection. Phương thức update() cập nhật các giá tgrij trong tài liệu hiện có trong khi phương thức save() thay thế tài liệu hiện có bằng tài liệu được truyền trong phương thức save()
Cú pháp:
db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Ví dụ:
- Sử dụng phương thức update() để cập nhật một tài liệu:
db.students.update({student_id: "S2020.0015"}, {$set: {student_id: "S2020.0016", first_name: "Phạm"}})
hoặc
db.students.update({student_id: "S2020.0016"}, {$set: {student_id: "S2020.0015", first_name: "Phạm"}}, {multi:false})
- Sử dụng phương thức update() để cập nhật nhiều tài liệu:
db.students.update({student_id: "S2020.0016"}, {$set: {student_id: "S2020.0015", first_name: "Phạm"}}, {multi:true})
- Sử dụng phương thức save() để thay thế một tài liệu nếu đã tồn tại giá trị thuộc tính _id, ngược lại chuyển sang thêm mới tài liệu)
db.students.save({"_id" : ObjectId("5e8f5546fb03adf70ac477b3"), first_name: "Nguyễn", last_name:"Khoái"})
Xoá tài liệu
MongoDB sử dụng phương thức remove() để xoá tài liệu ra khỏi một Collection.
Cú pháp:
db.COLLECTION_NAME.remove(DELLETION_CRITTERIA[, {justOne: d}])
DELLETION_CRITTERIA
: Chỉ ra tiêu chí để xoá tài liệujustOne
: Không bắt buộc. Nếu được đặt thành true hoặc 1, thì chỉ xóa một tài liệu
Ví dụ:
- Xoá 1 tài liệu
hoặc xoá dựa vào thuộc tính _iddb.students.remove({"first_name": "Trần"}, {justOne:true})
db.students.remove({"_id" : ObjectId("5e8f5546fb03adf70ac477b3")})
- Xoá nhiều tài liệu
db.students.remove({"first_name": "Phạm"})
hoặc
db.students.remove({"first_name": "Phạm"}, {justOne:false})