Trong bài viết này, chúng tôi sẽ giải quyết cách thực hiện các thao tác truy vấn cơ bản trong MongoDB. Chúng tôi đang sản xuất dữ liệu với tốc độ chưa từng có sau sự lan rộng toàn cầu của internet. Vì nó sẽ yêu cầu chúng tôi thu thập/yêu cầu dữ liệu cần thiết từ cơ sở dữ liệu để tiến hành một số loại phân tích, điều cực kỳ quan trọng là chúng tôi phải chọn đúng công cụ để truy vấn dữ liệu
Đây là nơi MongoDB xuất hiện, cụ thể. MongoDB là một cơ sở dữ liệu phi cấu trúc, ở dạng tài liệu, lưu trữ dữ liệu. Ngoài ra, MongoDB rất hiệu quả trong việc xử lý lượng dữ liệu khổng lồ và là cơ sở dữ liệu NoSQL được sử dụng phổ biến nhất vì nó cung cấp ngôn ngữ truy vấn phong phú và khả năng truy cập dữ liệu linh hoạt và dễ dàng
Tạo cơ sở dữ liệu mẫu
Trước khi bắt đầu, chúng tôi sẽ tạo một DB mẫu với một số dữ liệu mẫu để thực hiện tất cả các thao tác
Chúng tôi sẽ tạo một cơ sở dữ liệu có tên myDB và sẽ tạo một bộ sưu tập với thứ tự tên. Đối với điều này, tuyên bố sẽ như sau
> use myDB > db.createCollection("orders") >MongoDB không sử dụng các hàng và cột. Nó lưu trữ dữ liệu ở định dạng tài liệu. Một bộ sưu tập là một nhóm các tài liệu
Bạn có thể kiểm tra tất cả các bộ sưu tập trong cơ sở dữ liệu bằng cách sử dụng câu lệnh sau
> use myDB >show collections orders system.indexes >Hãy chèn một số tài liệu bằng cách sử dụng câu lệnh sau
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])Một tài liệu tương đương với một hàng RDBMS. Nó không cần phải có cùng một lược đồ trong mỗi tài liệu. Điều đó có nghĩa là một tài liệu có thể không có bất kỳ trường nào không có bất kỳ giá trị nào
Tài liệu truy vấn
phương thức tìm()
Bạn cần sử dụng phương thức find() để truy vấn tài liệu từ bộ sưu tập MongoDB. Câu lệnh sau sẽ lấy tất cả các tài liệu từ bộ sưu tập
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >chiếu
Nếu bạn chỉ muốn tìm nạp các trường đã chọn thì bạn có thể sử dụng phép chiếu. Câu lệnh sau sẽ chỉ tìm nạp trường Khách hàng và Email
> db.orders.find( { }, { Customer: 1, Email: 1 }) { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Email:"abc@mail.com" }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz" }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Email:"ron@mail.com" } >Lọc tài liệu bằng cách chỉ định một điều kiện
Bây giờ chúng ta sẽ tìm hiểu cách chúng ta có thể tìm nạp các tài liệu phù hợp với một điều kiện cụ thể. MongoDB cung cấp nhiều toán tử so sánh cho việc này
1. Toán tử $eq
Toán tử $eq kiểm tra sự bằng nhau của giá trị trường với giá trị đã chỉ định. Để tìm nạp đơn hàng trong đó PaymentMode là 'Thẻ', bạn có thể sử dụng câu lệnh sau
>db.orders.find( { PaymentMode: { $eq: "Card" } } )Truy vấn này cũng có thể được viết như dưới đây
>db.orders.find( { PaymentMode: "Card" } )Một câu lệnh SQL tương tự sẽ như sau
SELECT * FROM orders WHERE PaymentMode="Card"Thí dụ
________số 8Toán tử $eq với tài liệu được nhúng
Bạn có thể nhận thấy rằng chúng tôi đã chèn Địa chỉ tài liệu được nhúng trong bộ sưu tập Đơn hàng. Nếu bạn muốn tìm nạp đơn đặt hàng có Quốc gia là 'Ấn Độ', bạn có thể sử dụng ký hiệu dấu chấm như câu lệnh sau
>db.Orders.find( { "Address.Country": { $eq: "India" } } )Truy vấn này cũng có thể được viết như dưới đây
> use myDB >show collections orders system.indexes >0Thí dụ
> use myDB >show collections orders system.indexes >1Toán tử $eq với mảng
Toán tử $eq sẽ truy xuất tất cả các tài liệu nếu điều kiện đã chỉ định là đúng với bất kỳ mục nào trong một mảng. Chúng tôi có một mảng OrderItems trong tài liệu. Nếu bạn muốn lọc các tài liệu trong đó 'giấy' cũng được sắp xếp thì câu lệnh sẽ như sau
> use myDB >show collections orders system.indexes >2Truy vấn này cũng có thể được viết như dưới đây
> use myDB >show collections orders system.indexes >3Thí dụ
> use myDB >show collections orders system.indexes >42. Toán tử $gt
Bạn có thể sử dụng toán tử $gt để truy xuất các tài liệu có giá trị của trường lớn hơn giá trị đã chỉ định. Câu lệnh sau sẽ tìm nạp các tài liệu có OrderTotal lớn hơn 800
> use myDB >show collections orders system.indexes >5Một câu lệnh SQL tương tự sẽ như sau
> use myDB >show collections orders system.indexes >6Thí dụ
> use myDB >show collections orders system.indexes >73. Toán tử $gte
Bạn có thể sử dụng toán tử $gte để truy xuất các tài liệu có giá trị của trường lớn hơn hoặc bằng giá trị đã chỉ định. Câu lệnh sau sẽ lấy các tài liệu trong đó OrderTotal lớn hơn hoặc bằng 800
> use myDB >show collections orders system.indexes >8Một câu lệnh SQL tương tự sẽ như sau
> use myDB >show collections orders system.indexes >9Thí dụ
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])04. Toán tử $lt
Bạn có thể sử dụng toán tử $lt để truy xuất các tài liệu có giá trị của trường nhỏ hơn giá trị đã chỉ định. Câu lệnh sau sẽ lấy các tài liệu có OrderTotal nhỏ hơn 800
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])1Một câu lệnh SQL tương tự sẽ như sau
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])2Thí dụ
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])34. Toán tử $lte
Bạn có thể sử dụng toán tử $lte để truy xuất các tài liệu có giá trị của trường nhỏ hơn hoặc bằng giá trị đã chỉ định. Câu lệnh sau sẽ lấy các tài liệu có OrderTotal nhỏ hơn hoặc bằng 800
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])4Một câu lệnh SQL tương tự sẽ như sau
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])5Thí dụ
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])65. Toán tử $ne
Bạn có thể sử dụng toán tử $ne để truy xuất tài liệu trong đó giá trị của trường không bằng giá trị đã chỉ định
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])7Một câu lệnh SQL tương tự sẽ như sau
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])8Thí dụ
> db.orders.insert([ { Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.in", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } ])96. toán tử $in
Bạn có thể sử dụng toán tử $in để truy xuất các tài liệu trong đó giá trị của một trường bằng với bất kỳ giá trị nào trong mảng đã chỉ định
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >0Thí dụ
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >17. Toán tử $nin
Bạn có thể sử dụng toán tử $nin để truy xuất các tài liệu trong đó giá trị của một trường không bằng bất kỳ giá trị nào trong mảng đã chỉ định. Nó cũng sẽ chọn các tài liệu mà trường không tồn tại
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >2Thí dụ
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >3lập chỉ mục
Chúng tôi biết rằng lập chỉ mục là rất quan trọng nếu chúng tôi đang thực hiện các truy vấn trên cơ sở dữ liệu lớn. Nếu không lập chỉ mục, việc thực thi truy vấn có thể tốn kém. Chúng ta có thể thêm một chỉ mục tăng dần đơn giản trên một trường bằng cách sử dụng câu lệnh sau
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >4MongoDB tạo một chỉ mục duy nhất trên trường ‘_id’ theo mặc định. Một chỉ mục duy nhất sẽ ngăn việc chèn hai tài liệu có cùng giá trị cho trường đó. Nếu bạn muốn tạo một chỉ mục duy nhất thì câu lệnh sẽ như sau
> db.orders.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") Customer: "abc", Address:{"City":"Jaipur","Country":"India"}, PaymentMode":"Card", Email:"abc@mail.com", OrderTotal: 1000.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":10}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"journal","Price":"200.00","Qty":2}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607544c"), Customer: "xyz", Address:{"City":"Delhi","Country":"India"}, PaymentMode":"Cash", OrderTotal: 800.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"paper","Price":"10.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":500} ] }, { "_id" : ObjectId("5dd4e2cc0821d3b44607644c"), Customer: "ron", Address:{"City":"New York","Country":"USA"}, PaymentMode":"Card", Email:"ron@mail.com", OrderTotal: 600.00, OrderItems:[ {"ItemName":"notebook","Price":"150.00","Qty":5}, {"ItemName":"postcard","Price":"10.00","Qty":00} ] } >5Sự kết luận
Tôi hy vọng bạn đã học được điều gì đó mới hôm nay. Nếu bạn muốn tìm hiểu thêm một số nội dung trên MongoDB, đây là một bài viết thú vị về MongoDB tự lưu trữ. Tôi cũng mời bạn tự mình thử nội dung và chia sẻ kinh nghiệm của bạn trong phần nhận xét. Hơn nữa, nếu bạn gặp phải bất kỳ vấn đề nào với bất kỳ định nghĩa nào ở trên, vui lòng hỏi tôi trong phần bình luận bên dưới