Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?

Trong hướng dẫn MongoDB này, chúng ta sẽ hiểu về truy vấn lồng nhau MongoDB. Chúng tôi sẽ đề cập đến chủ đề này với các hoạt động và ví dụ khác nhau. Ngoài ra, chúng tôi cũng sẽ thảo luận về danh sách các chủ đề sau đây

  • MongoDB truy vấn lồng nhau
  • Ví dụ truy vấn lồng nhau MongoDB
  • Đối tượng lồng truy vấn MongoDB không trống
  • Truy vấn lồng nhau MongoDB trả về các trường cụ thể
  • Mảng truy vấn lồng nhau MongoDB
  • MongoDB truy vấn lồng nhau không bằng nhau
  • Kết hợp truy vấn lồng nhau MongoDB
  • Truy vấn lồng nhau MongoDB bằng python

Mục lục

MongoDB truy vấn lồng nhau

MongoDB cung cấp một tính năng được gọi là tài liệu được nhúng hoặc lồng nhau. Tài liệu nhúng hoặc tài liệu lồng nhau là những loại tài liệu chứa tài liệu bên trong tài liệu khác

Nói cách khác, khi một bộ sưu tập có một tài liệu và tài liệu này chứa một tài liệu khác, một tài liệu khác chứa một tài liệu phụ khác, v.v., thì các loại tài liệu đó được gọi là tài liệu được nhúng hoặc tài liệu lồng nhau.  

ghi chú

  • Trong MongoDB, bạn chỉ có thể lồng tài liệu tối đa 100 cấp độ
  • Tổng kích thước tài liệu không được vượt quá 16 MB

Đọc Tạo bảng trong MongoDB

Quy trình tạo tài liệu Nhúng

Trong MongoDB, bạn chỉ cần nhúng một tài liệu vào trong một tài liệu khác. Như chúng ta biết rằng trong mongo shell, các tài liệu được định nghĩa bằng dấu ngoặc nhọn ( {} ) và bên trong các dấu ngoặc nhọn này, chúng ta có các cặp giá trị trường

Bây giờ bên trong các trường này, chúng ta có thể nhúng hoặc đặt một tài liệu khác bằng cách sử dụng dấu ngoặc nhọn {} và tài liệu này có thể bao gồm các cặp giá trị trường hoặc tài liệu phụ khác

cú pháp

{
   field: { field1: value1, field2: value2 }
}

Đọc Cách MongoDB tạo bộ sưu tập

Ví dụ truy vấn lồng nhau MongoDB

Trong chủ đề MongoDB này, bạn sẽ hiểu khái niệm truy vấn lồng nhau với sự trợ giúp của ví dụ đã cho

Ví dụ

Chúng tôi có một cơ sở dữ liệu 'Công ty'. Bây giờ cơ sở dữ liệu này có một bộ sưu tập có tên là 'khoảng không quảng cáo' và bộ sưu tập này chứa các tài liệu sau

Bên trong tài liệu này, chúng ta có một tên trường ‘item’ chứa một tài liệu khác và tài liệu này chứa hai trường (i. e, sku, color) với các giá trị của chúng

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Ví dụ truy vấn lồng nhau MongoDB

Các tài liệu sau đây sẽ chèn vào bộ sưu tập hàng tồn kho

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])

Bây giờ, Chèn tài liệu vào bộ sưu tập. Và, kiểm tra đầu ra

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tìm truy vấn lồng nhau MongoDB

Vì vậy, bộ sưu tập hàng tồn kho chứa 4 tài liệu và các tài liệu này chứa các tài liệu lồng nhau. Bạn có thể truy cập các tài liệu của bộ sưu tập bằng phương thức find()

db.inventory.find().pretty()

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Ví dụ truy vấn lồng nhau MongoDB

Đọc sao lưu và khôi phục MongoDB

Đối tượng lồng truy vấn MongoDB không trống

Trong chủ đề MongoDB này, bạn sẽ học cách lấy tất cả các tài liệu trong đó ít nhất một phần tử của trường mảng lồng nhau không rỗng hoặc trống. Hãy hiểu điều này theo sau là một ví dụ

Ví dụ

Các tài liệu sau đây sẽ chèn vào bộ sưu tập hàng tồn kho

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "planner", instock: [ { warehouse: null, qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: null, qty: 15 }, { warehouse: null, qty: 35 } ] }
])

Hãy kiểm tra việc thực thi mã

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Đối tượng lồng truy vấn MongoDB không trống

Sau đó, chúng ta sẽ áp dụng truy vấn dưới đây cho tập hợp so sánh tất cả các phần tử của mảng để lấy tất cả các tài liệu trong đó có ít nhất một phần tử của trường mảng lồng nhau không rỗng hoặc rỗng

db.inventory.find(
     { 
         "instock": 
             { 
               "$elemMatch": 
                   { "warehouse":
                         { "$ne": null }
                   }
             }
     }
)

Ở đây, chúng tôi đã sử dụng toán tử $elemMatch để khớp các tài liệu chứa trường mảng 'instock' với ít nhất một phần tử khớp với tất cả các tiêu chí truy vấn đã chỉ định

Và, $ne được sử dụng để chọn các tài liệu trong đó giá trị của trường 'kho' không bằng giá trị đã chỉ định.  

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Đối tượng lồng truy vấn MongoDB không rỗng

Chúng tôi đã truy xuất thành công các tài liệu trong đó thuộc tính tài liệu mảng lồng nhau không phải là null

Đọc Cách tạo cơ sở dữ liệu mới trong MongoDB

Truy vấn lồng nhau MongoDB trả về các trường cụ thể

Trong chủ đề này, bạn sẽ học cách trả về các trường cụ thể từ các tài liệu lồng nhau của bộ sưu tập MongoDB. Hãy hiểu điều này với sự giúp đỡ của một ví dụ

Ví dụ

Các tài liệu sau đã được chèn vào bộ sưu tập sản phẩm

db.products.insertMany([
{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate" : ISODate("2011-05-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 }, "color" : [ "white", "black" ], "storage" : [ 64, 128, 256 ] },
{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate" : ISODate("2011-09-01T00:00:00Z"), "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 }, "color" : [ "white", "black", "purple" ], "storage" : [ 128, 256, 512 ] },
{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate" : ISODate("2015-01-14T00:00:00Z"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 }, "color" : [ "blue" ], "storage" : [ 16, 64, 128 ] },
{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate" : ISODate("2020-05-14T00:00:00Z"), "spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256, 1024 ] },
{ "_id" : 5, "name" : "SmartPhone", "price" : 599, "releaseDate" : ISODate("2022-09-14T00:00:00Z"), "spec" : { "ram" : 4, "screen" : 5.7, "cpu" : 1.66 }, "color" : [ "white", "orange", "gold", "gray" ], "storage" : [ 128, 256 ] }
])

Sau đó, chúng tôi sẽ áp dụng truy vấn sau để tìm để trả về các trường cụ thể từ các tài liệu lồng nhau

db.products.find( {"spec.ram": { $gt: 4} })

Ở đây, chúng tôi đã sử dụng toán tử lớn hơn $gt để trả về các tài liệu cụ thể trong đó thông số kỹ thuật. ram' lớn hơn 4

Lưu ý rằng, khi truy cập tài liệu bằng ký hiệu dấu chấm, trường và trường lồng nhau phải nằm trong dấu ngoặc kép

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Truy vấn lồng nhau MongoDB trả về các trường cụ thể

Chúng tôi đã trả về thành công các tài liệu cụ thể về mảng lồng nhau của bộ sưu tập

Đọc Xuất MongoDB sang CSV

Mảng truy vấn lồng nhau MongoDB

Trong chủ đề này, bạn sẽ học cách tìm mảng lồng nhau của bộ sưu tập MongoDB khớp với tài liệu đã chỉ định. Vì vậy, hãy hiểu điều này theo sau là một ví dụ

Ví dụ

Trong ví dụ này, chúng ta sẽ học cách tìm ra những tài liệu đó khớp với trường mảng lồng nhau

Các tài liệu sau đây đã được đưa vào bộ sưu tập hàng tồn kho

db.inventory.insertMany([
{ "item": "journal", "instock": [ { "warehouse": "A", "qty": 5 }, { "warehouse": "C", "qty": 15 } ] },
{ "item": "notebook", "instock": [ { "warehouse": "C", "qty": 5 } ] },
{ "item": "planner", "instock": [ { "warehouse": null, "qty": 40 }, { "warehouse": "B", "qty": 5 } ] },
{ "item": "postcard", "instock": [ { "warehouse": null, "qty": 15 }, { "warehouse": null, "qty": 35 } ] }
])

Sau đó, chúng tôi sẽ áp dụng truy vấn sau để trả về tất cả các tài liệu đã chọn trong đó một phần tử trong mảng kho khớp với tài liệu đã chỉ định

________số 8

Lưu ý rằng, các đối sánh bằng trên toàn bộ tài liệu được nhúng hoặc lồng nhau yêu cầu đối sánh chính xác của tài liệu đã chỉ định, bao gồm cả thứ tự trường

Ví dụ: truy vấn tiếp theo không khớp với bất kỳ tài liệu nào trong bộ sưu tập hàng tồn kho

db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )

Hãy kiểm tra đầu ra ngay bây giờ;

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Mảng truy vấn lồng nhau MongoDB

Chúng tôi đã truy xuất thành công tài liệu mảng lồng nhau của bộ sưu tập

Đọc MongoDB không được công nhận là lệnh nội bộ hoặc bên ngoài

MongoDB truy vấn lồng nhau không bằng nhau

Trong chủ đề này, bạn sẽ học cách tìm tất cả các tài liệu trong MongoDB ở dạng mảng lồng nhau trong đó giá trị của trường không bằng giá trị đã chỉ định

MongoDB cung cấp $ne để chọn các tài liệu có giá trị của trường không bằng giá trị đã xác định. Điều này bao gồm các tài liệu không chứa trường

cú pháp

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
0

Hãy hiểu chủ đề này theo sau là một ví dụ

Ví dụ

Các tài liệu sau đây đã được đưa vào bộ sưu tập hàng tồn kho

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])

Bây giờ, chúng ta sẽ áp dụng truy vấn sau để chọn tất cả tài liệu từ bộ sưu tập khoảng không quảng cáo nơi giá trị trường mảng lồng nhau không bằng nhau

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
2

Ở đây, chúng tôi đã sử dụng thao tác $ne và áp dụng truy vấn trên 'mục' của trường mảng lồng nhau. màu' để trả lại các tài liệu trong đó 'màu' không bằng 'màu xanh'

Kiểm tra đầu ra ngay bây giờ;

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
MongoDB truy vấn lồng nhau không bằng nhau

Chúng tôi đã tìm thấy thành công tất cả các tài liệu trong đó trường mảng lồng nhau không bằng nhau

Đọc MongoDB tham gia hai bộ sưu tập

Kết hợp truy vấn lồng nhau MongoDB

Trong chủ đề này, bạn sẽ học cách tìm các tài liệu đó từ bộ sưu tập MongoDB khớp với trường mảng lồng nhau. Hãy hiểu điều này với sự giúp đỡ của một ví dụ

Ví dụ

Trong ví dụ này, chúng ta sẽ tìm ra những tài liệu từ bộ sưu tập MongoDB khớp với trường mảng lồng nhau

Các tài liệu sau đây đã được đưa vào bộ sưu tập hàng tồn kho

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
3

Bây giờ, chúng ta sẽ áp dụng truy vấn sau để so khớp trường mảng lồng nhau và tìm ra những tài liệu thỏa mãn điều kiện

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
4

Lưu ý rằng, các đối sánh bằng trên toàn bộ tài liệu được nhúng hoặc lồng nhau yêu cầu đối sánh chính xác của tài liệu đã chỉ định, bao gồm cả thứ tự trường

Ví dụ: truy vấn tiếp theo không khớp với bất kỳ tài liệu nào trong bộ sưu tập hàng tồn kho

db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
5

Hãy kiểm tra đầu ra ngay bây giờ;

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Kết hợp truy vấn lồng nhau MongoDB

Chúng tôi đã truy xuất thành công các tài liệu mảng lồng nhau phù hợp của bộ sưu tập MongoDB

Cũng đọc, Nhập CSV vào MongoDB

Truy vấn lồng nhau MongoDB bằng python

Trong MongoDB, truy vấn đóng vai trò quan trọng để tìm nạp một bản ghi cụ thể từ tài liệu MongoDB. Pymongo là một mô-đun python được sử dụng để tương tác giữa cơ sở dữ liệu mongo và ứng dụng Python

Trong chủ đề này, chúng ta sẽ học cách tìm các tài liệu MongoDB ở dạng mảng lồng nhau với sự trợ giúp của python. Hãy hiểu điều này với sự giúp đỡ của một ví dụ

Ví dụ

Trong code, chúng ta đã import thư viện pymongo để tương tác giữa cơ sở dữ liệu mongo và ứng dụng Python. Sau đó, hãy làm theo các bước dưới đây;

  • Tạo đối tượng MongoClient và kết nối với máy chủ
  • Sau đó, truy cập cơ sở dữ liệu hiện có và bộ sưu tập MongoDB, cơ sở dữ liệu của tôi và khoảng không quảng cáo tương ứng
  • Tiếp theo, sử dụng phương thức find() để lấy danh sách tất cả các tài liệu theo điều kiện xác định
  • Ở đây, Điều kiện là tìm tài liệu có kích thước trường mảng lồng nhau. h’ bằng 14
db.inventory.insertMany([
{ "_id" : 1, "dept" : "A", "item" : { "sku" : "101", "color" : "red" }, "sizes" : [ "S", "M" ] },
{ "_id" : 2, "dept" : "A", "item" : { "sku" : "102", "color" : "blue" }, "sizes" : [ "M", "L" ] },
{ "_id" : 3, "dept" : "B", "item" : { "sku" : "103", "color" : "blue" }, "sizes" : "S" },
{ "_id" : 4, "dept" : "A", "item" : { "sku" : "104", "color" : "black" }, "sizes" : [ "S" ] }
])
6

Hãy kiểm tra đầu ra ngay bây giờ;

Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Tôi có thể tìm các tài liệu lồng nhau trong MongoDB ở đâu?
Truy vấn lồng nhau MongoDB bằng python

Chúng tôi đã truy xuất thành công các tài liệu mảng lồng nhau của bộ sưu tập MongoDB bằng python

Hướng dẫn MongoDB liên quan

  • MongoDB tắt với mã 100
  • Cách kiểm tra xem MongoDB đã được cài đặt chưa
  • MongoDB sắp xếp theo ngày
  • MongoDB sắp xếp theo lĩnh vực
  • Nhóm MongoDB theo nhiều trường

Vì vậy, trong hướng dẫn này, chúng ta đã hiểu về truy vấn lồng nhau MongoDB. Và, chúng tôi đã đề cập đến các hoạt động khác nhau với các ví dụ. Chúng tôi đã đề cập đến danh sách các chủ đề sau đây

  • MongoDB truy vấn lồng nhau
  • Ví dụ truy vấn lồng nhau MongoDB
  • Đối tượng lồng truy vấn MongoDB không trống
  • Truy vấn lồng nhau MongoDB trả về các trường cụ thể
  • Mảng truy vấn lồng nhau MongoDB
  • MongoDB truy vấn lồng nhau không bằng nhau
  • Kết hợp truy vấn lồng nhau MongoDB
  • Truy vấn lồng nhau MongoDB bằng python

Bijay

Tôi là Bijay có hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Trong thời gian này, tôi đã làm việc trên MariaDB và sử dụng nó trong rất nhiều dự án. Hầu hết độc giả của chúng tôi đến từ Hoa Kỳ, Canada, Vương quốc Anh, Úc, New Zealand, v.v.

Bạn muốn tìm hiểu MariaDB? . Ngoài ra, tôi là MVP của Microsoft

Tài liệu lồng nhau MongoDB là gì?

MongoDB cung cấp cho bạn một tính năng thú vị được gọi là Tài liệu nhúng hoặc Tài liệu lồng nhau. Tài liệu nhúng hoặc tài liệu lồng nhau là những loại tài liệu chứa tài liệu bên trong tài liệu khác .

Làm cách nào để tìm kiếm bên trong mảng trong MongoDB?

Để truy vấn xem trường mảng có chứa ít nhất một phần tử có giá trị được chỉ định hay không, hãy sử dụng bộ lọc { . Để chỉ định điều kiện cho các phần tử trong trường mảng, hãy sử dụng các toán tử truy vấn trong tài liệu bộ lọc truy vấn. {

Làm cách nào để cập nhật mảng đối tượng lồng nhau trong MongoDB?

Cập nhật mảng đối tượng lồng nhau .
db. thu thập. .
Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..

Chức năng nào được sử dụng để hiển thị tài liệu trong MongoDB?

Trong MongoDB, phương thức find() được sử dụng để chọn tài liệu trong bộ sưu tập và trả lại con trỏ cho tài liệu đã chọn. Con trỏ nghĩa là một con trỏ trỏ đến một tài liệu, khi chúng ta sử dụng phương thức find() nó sẽ trả về một con trỏ trên các tài liệu đã chọn và trả về từng cái một.