Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual Các hoạt động CRUD Tạo, đọc, cập nhật và xóa tài liệu. Tạo hoặc chèn các hoạt động Thêm tài liệu mới vào một bộ sưu tập. Nếu bộ sưu tập hiện không tồn tại, các hoạt động chèn sẽ tạo ra bộ sưu tập. MongoDB cung cấp các phương pháp sau để chèn tài liệu vào một bộ sưu tập: {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
9New trong phiên bản 3.2var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
0new trong phiên bản 3.2
Trong MongoDB, các hoạt động chèn nhắm mục tiêu một bộ sưu tập duy nhất. Tất cả các hoạt động viết trong MongoDB đều là nguyên tử ở cấp độ của một tài liệu. Để biết ví dụ, xem chèn tài liệu. Đọc hoạt động lấy tài liệu từ một bộ sưu tập; tức là truy vấn một bộ sưu tập cho các tài liệu. MongoDB cung cấp các phương pháp sau để đọc tài liệu từ bộ sưu tập: var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
1
Bạn có thể chỉ định các bộ lọc truy vấn hoặc tiêu chí xác định các tài liệu để trả về. Để biết ví dụ, xem: Cập nhật hoạt động sửa đổi các tài liệu hiện có trong một bộ sưu tập. MongoDB cung cấp các phương pháp sau để cập nhật tài liệu của bộ sưu tập: var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
2New trong phiên bản 3.2var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
3New trong phiên bản 3.2var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
4New trong phiên bản 3.2
Trong MongoDB, các hoạt động cập nhật nhắm mục tiêu một bộ sưu tập duy nhất. Tất cả các hoạt động viết trong MongoDB đều là nguyên tử ở cấp độ của một tài liệu. Bạn có thể chỉ định các tiêu chí hoặc bộ lọc, xác định các tài liệu để cập nhật. Các bộ lọc này sử dụng cùng một cú pháp như các hoạt động đọc. Để biết ví dụ, xem tài liệu cập nhật.
Xóa hoạt động Xóa các tài liệu khỏi một bộ sưu tập. MongoDB cung cấp các phương pháp sau để xóa tài liệu của bộ sưu tập: var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
5new trong phiên bản 3.2var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
6New trong phiên bản 3.2
Trong MongoDB, xóa các hoạt động nhắm vào một bộ sưu tập duy nhất. Tất cả các hoạt động viết trong MongoDB đều là nguyên tử ở cấp độ của một tài liệu. Bạn có thể chỉ định các tiêu chí hoặc bộ lọc, xác định các tài liệu để xóa. Các bộ lọc này sử dụng cùng một cú pháp như các hoạt động đọc. Để biết ví dụ, xem xóa tài liệu. MongoDB cung cấp khả năng thực hiện các hoạt động viết với số lượng lớn. Để biết chi tiết, xem hoạt động viết hàng loạt. Để xóa chỉ một document phù hợp với điều kiện( trường hợp có nhiều document thỏa mãn thì sẽ xóa document đầu tiên), sử dụng db.collection.deleteOne() → MongoDB Manual
Ví dụ sau xóa document đầu tiên mà có status bằng "D"Select your language drop-down menu in the upper-right to set the language of the following examples.
4. Tổng kếtTrên đây là những phương thức CRUD hay dùng nhất trong MongDB. Trong bài viết sau mình sẽ viết chi tiết hơn về các phương thức truy vấn khác trong MongoDB. Mong bài viết này hữu ích đối với các bạn. Nguồn tham khảo: https://docs.mongodb.com/manual/crud/ Docs Home → MongoDB Manual ➤ Use the Select your language drop-down menu in the upper-right to set the language of the following examples. With write concerns, you can specify the level of acknowledgement requested from MongoDB for write operations. For details, see Write Concern. Giới thiệu về MongoDB1. MongoDB là gì?MongoDB là một Document Database:Document Database: - Mỗi một bản ghi trong MongoDb là một document - một cấu trúc dữ liệu bao gồm các cặp field và value.document - một cấu trúc dữ liệu bao gồm các cặp field và value.
- MongoDB documents tương tự với JSON object.
- Các giá trị của các trường có thể bao gồm document khác, một mảng, hoặc mảng của các document.
Lợi ích của việc sử dụng document là: - Document tương ứng với các kiểu dữ liệu tự nhiên trong nhiều ngôn ngữ lập trình.
- Sử dụng các mảng và documents nhúng giảm thiểu việc join tốn công sức như cơ sở dữ liệu quan hệ.
- Các trường có thể thay đổi từ document này sang document khác dẫn đên cấu trúc dữ liệu có thể dễ dàng thay đổi.
Các tính năng chính của MongoDB - Hiệu suất cao: MongoDB hỗ trợ các mô hình dữ liệu nhúng làm giảm hoạt động vào ra trên hệ thống cơ sở dữ liệu. Đồng thời các chỉ mục (indexes) hỗ trợ truy vấn nhanh.
- Ngôn ngữ truy vấn mạnh mẽ: MongoDB cung cấp ngôn ngữ truy vấn phong phú cho các hoạt động đọc ghi (CRUD) cũng như Data Aggregation, Text Search
- MongoDB là cơ sở dữ liệu phân tán do đó dễ dàng mở rộng theo chiều ngang, khả năng sẵn có cao...
- Hỗ trợ nhiều công cụ lưu trữ.
- MongoDB miễn phí sử dụng
2. Cơ bản về MongoDB2.1 DatabaseTrong MongoDB, database chứa các collection gồm các document. -
Để chọn database để sử dụng, trong mongo shell, sử dụng câu lệnh use myDB
Nếu DB chưa tồn tại, MongoDB sẽ tạo một DB khi mà bạn lần đầu lưu trữ dữ liệu cho database. use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
insertOne() sẽ tạo cả database myNewDB và collection myNewCollection1 nếu chúng đều không tồn tại. sẽ tạo cả database myNewDB và collection myNewCollection1 nếu chúng đều không tồn tại.
2.2 Collection- Collection tương đương với Bảng (table) trong cơ sở dữ liệu quan hệ tương đương với Bảng (table)
trong cơ sở dữ liệu quan hệ
- Collection chứa các document
2.3 DocumentDocument tương đương với bản ghi dữ liệu (data record) trong cơ sở dữ liệu quan hệ. tương đương với bản ghi dữ liệu (data record) trong cơ sở dữ liệu quan hệ. Document ở đây là BSON document. BSON là biểu diễn nhị phân của JSON document.BSON document. BSON là biểu diễn nhị phân của JSON document. Các document của MongoDB bao gồm các cặp (field: value) theo cấu trúc sau: {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
Value ở đây có thể là bất kì kiểu dữ liệu BSON nào, có thể là document khác, mảng, hay là mảng của các document, ví dụ document sau chứa các giá trị thuộc các kiểu khác nhau: var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}
3. MongoDB CRUD Operations3.1 Create Operations- Create hay Insert thêm một document mới vào một collection. Nếu collection hiện không tồn tại, insert sẽ tạo collection.
- MongoDB cung cấp 2 phương thức để chèn document vào một collection
db.collection.insertOne(): chèn một tài liệu mới vào một collection. Nếu document không có trường _id , MongoDB sẽ tự động thêm trường _id với value kiểu ObjectId.: chèn một tài liệu mới vào một collection. Nếu document không có trường _id , MongoDB sẽ tự động thêm trường _id với value kiểu ObjectId. db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
insertOne() trả về một document bao gồm id của document vừa mới insert vào và một trường acknowleadge (chúng ta sẽ tìm hiểu về trường này sau): trả về một document bao gồm id của document vừa mới insert vào và một trường acknowleadge (chúng ta sẽ tìm hiểu về trường này sau): {
"acknowledged" : true,
"insertedId" : ObjectId("56fc40f9d735c28df206d078")
}
db.collection.insertMany(): insert nhiều document vào một collection, truyền vào phương thức là mảng các document: insert nhiều document vào một collection, truyền vào phương thức là
mảng các document db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
Ví dụ trên chèn 3 document mới vào collection inventory. Nếu document không chỉ định trường _id, MongoDB thêm trường _id với một giá trị kiểu ObjectId vào mỗi document.
3.2 Read OperationsRead operation truy xuất documents từ một collection Để lấy ra tất cả các document trong collection, truyền vào một document trống vào phương thức find db.inventory.find( {} )
Hành động này tương đương với câu lệnh SQL sau: SELECT * FROM inventory
Điều kiện Bằng: Để chỉ dịnh điều kiện bằng, sử dụng biểu thức db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
1:{ <field1>: <value1>, ... }
Câu lệnh dưới đây lấy ra các document có status bằng "D" từ collection inventory use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
0Hành động này tương đương với câu lệnh SQL sau: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
1 SELECT * FROM inventory
Điều kiện Bằng: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
2Để chỉ dịnh điều kiện bằng, sử dụng biểu thức db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
1:Câu lệnh dưới đây lấy ra các document có status bằng "D" từ collection inventoryChỉ định điều kiện sử dụng các toán tử truy vấn: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
4Cú pháp: Ví dụ: Câu lệnh dưới đây lấy ra tất cả các document từ inventory collection với status bằng "A" hoặc "D" use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
3 $lt)use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
5Câu lệnh trên tương ứng với câu lệnh SQL sau: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
6Tham Khảo Query and Projection Operators để biết thêm các toán tử truy vấn của MongoDB Truy vấn AND Một truy vấn kết hợp có thể chỉ định các điều kiện thỏa mãn cho nhiều trường của document. Ví dụ dưới đây lấy ra tất cả các documents trong collection inventory với trường status bằng "a" và trường qty ít hơn 30 ($lt) use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
7Chỉ định điều kiện sử dụng các toán tử truy vấn: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
8Cú pháp: Ví dụ: Câu lệnh dưới đây lấy ra tất cả các document từ inventory collection với status bằng "A" hoặc "D"$lt) 30 hoặc trường item bắt đầu với kí tự p use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
9Câu lệnh trên tương ứng với câu lệnh SQL sau: {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
0
Tham Khảo Query and Projection Operators để biết thêm các toán tử truy vấn của MongoDBTruy vấn AND$set. Một truy vấn kết hợp có thể chỉ định các điều kiện thỏa mãn cho nhiều trường của document. Ví dụ dưới đây lấy ra tất cả các documents trong collection inventory với trường status bằng "a" và trường qty ít hơn 30 ($lt) {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
1Câu lệnh trên tương đương với câu lệnh SQL sau: Tham khảo comparison operators để biết thêm về các toán tử so sánh của MongoDB với db.collection.updateOne() Truy vấn OR {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
2- Ví dụ sau lấy ra các tài liệu trong collection có trường status bằng "A" hoặc qty ít hơn 30
- Truy vấn kết hợp AND, ORlastModified thành ngày hiện tại. Nếu lastModified không tồn tại, $currentDate sẽ tạo trường này.
Ví dụ sau lấy ra tất cả các document trong collection có trường status bằng "A" và trường qty ít hơn ($lt) 30 hoặc trường item bắt đầu với kí tự p với db.collection.updateMany() 3.3 Update Operations {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
3Update operation chỉnh sửa documents đã tồn tại trong một collection. Để update một document, MongoDB cung cấp các toán tử update trong đó có $set. Để sử dụng các toán tử update, truyền vào phương thức update một update documentdb.collection.replaceOne(). Một vài toán tử update, trong đó có $set, sẽ tạo ra các trường nếu trường đó không tồn tại Update một document với db.collection.updateOne() Ví dụ sau sẽ update document đầu tiên mà có trường item bằng "paper": {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
4
3.4 Delete OperationDelete operation xóa bỏ document từ một collection. Để xóa tất cả các tài liệu từ một collection, truyền một document filter {} tới phương thức db.collection.deleteMany()filter {} tới phương thức db.collection.deleteMany() Ví dụ sau xóa tất cả các document của collection inventory {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
5Xóa tất cả các document thỏa mãn điều kiện Bạn có thể chỉ định các tiêu chí hoặc bộ lọc xác định các tài liệu cần xóa. Để chỉ định điều kiện bằng, sử dụng biểu thức ::
Có thể sử dụng query operators để chỉ định các điều kiện: use myNewDB
db.myNewCollection1.insertOne( { x: 1 } )
2Ví dụ sau xóa tất cả các documents mà có trường status bằng "A" {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
7Xóa chỉ một document thỏa mãn điều kiện Để xóa chỉ một document phù hợp với điều kiện( trường hợp có nhiều document thỏa mãn thì sẽ xóa document đầu tiên), sử dụng db.collection.deleteOne()db.collection.deleteOne() Ví dụ sau xóa document đầu tiên mà có status bằng "D" {
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}
8
4. Tổng kết- Trên đây là những phương thức CRUD hay dùng nhất trong MongDB. Trong bài viết sau mình sẽ viết chi tiết hơn về các phương thức truy vấn khác trong MongoDB. Mong bài viết này hữu ích đối với các bạn.
- Nguồn tham khảo: https://docs.mongodb.com/manual/crud/
|