Làm cách nào để tìm nạp dữ liệu từ bộ sưu tập trong MongoDB?

MongoDB là một cơ sở dữ liệu đa nền tảng, hướng tài liệu, hoạt động dựa trên khái niệm bộ sưu tập và tài liệu. MongoDB cung cấp tốc độ cao, tính sẵn sàng cao và khả năng mở rộng cao

Lấy dữ liệu từ MongoDB

Pymongo cung cấp nhiều phương thức khác nhau để lấy dữ liệu từ mongodb. Hãy xem từng người một

1) Tìm một. Phương thức này được sử dụng để lấy dữ liệu từ bộ sưu tập trong mongoDB. Nó trả về lần xuất hiện đầu tiên.
Cú pháp.

find_one()

Ví dụ

Cơ sở dữ liệu mẫu

Làm cách nào để tìm nạp dữ liệu từ bộ sưu tập trong MongoDB?

Python3




find()
4
find()
5

 

 

find()
6
find()
7
find()
8
find()
9
find()
0

 

find()
0

find()
1
find()
7
find()
3
find()
4
find()
5

 

find()
6

find()
7_______57
find()
9____90
find()
5

 

find({},{field_data:bool})
2
find()
7
find({},{field_data:bool})
4

 

find({},{field_data:bool})
5
find({},{field_data:bool})
6

đầu ra

Làm cách nào để tìm nạp dữ liệu từ bộ sưu tập trong MongoDB?

2) Tìm tất cả. Đối với tất cả các lần xuất hiện trong vùng chọn, hãy sử dụng phương thức find(). Nó hoạt động giống như Select * query  của SQL.  

cú pháp.  

find()

Ví dụ

Python3




find()
4
find()
5

 

 

find()
6
find()
7
find()
8
find()
9
find()
0

 

find()
0

find()
1
find()
7
find()
3
find()
4
find()
5

 

find()
6

find()
7_______57
find()
9____90
find()
5

 

find({},{field_data:bool})
2
find()
7
find()
58

 

find()
59
find()
60
find()
61
find()
62

find()
63____95
find()
65

đầu ra.  

Làm cách nào để tìm nạp dữ liệu từ bộ sưu tập trong MongoDB?

find_one() và find() chấp nhận tham số bộ lọc tùy chọn để chọn tài liệu sẽ đưa vào tập hợp kết quả. Có thể là một tài liệu trống để bao gồm tất cả các tài liệu.
3) Chỉ tìm nạp các trường cụ thể. Nếu bạn chỉ muốn tìm nạp một số trường thì trong phương thức tìm, hãy chuyển tham số đầu tiên là {} và tham số thứ hai là 1 cho những trường bạn muốn tìm nạp và 0 cho những trường bạn không muốn tìm nạp.
Cú pháp.

find({},{field_data:bool})

Ví dụ.  

Python3




find()
4
find()
5

 

 

find()
6
find()
7
find()
8
find()
9
find()
0

 

find()
0

find()
1
find()
7
find()
3
find()
4
find()
5

 

find()
6

find()
7_______57
find()
9____90
find()
5

 

find()
85

find()
86

find({},{field_data:bool})
2
find()
7
find()
89
find()
90
find()
91
find()
92
find()
93
find()
94
find()
91
find()
96
find()
93

Cách tìm nạp dữ liệu từ các bộ sưu tập khác nhau thông qua hoạt động tập hợp MongoDB— (Giải thích bằng ví dụ)

Một vài ngày trước, tôi đã nói chuyện với một số bạn bè và đồng nghiệp là nhà phát triển của mình và tôi thấy rằng hầu hết chúng ta đã hiểu sai về các giai đoạn tổng hợp và toán tử trong MongoDB. Vì vậy, tôi đã nghĩ đến việc chia sẻ kiến ​​thức và kiến ​​thức của mình về chủ đề này vì tôi thực sự cảm thấy rằng để mở rộng quy mô hệ thống và tăng hiệu suất của các ứng dụng, tối ưu hóa truy vấn cơ sở dữ liệu là một phần không thể thiếu

Trong bài viết này, chúng ta sẽ tìm hiểu về một số kỹ thuật tổng hợp quan trọng và được sử dụng nhiều nhất trong MongoDB. Bạn có thể đánh dấu bài viết này và nó có thể rất hữu ích bất cứ khi nào bạn cần hỗ trợ

Ok, đủ rồi, bắt đầu nào

Tập hợp trong MongoDB là gì?

Tập hợp — như nghĩa đen cho thấy nó liên quan đến việc kết hợp nhiều thứ khác nhau, tương tự như vậy trong MongoDb tập hợp là một kỹ thuật để truy vấn dữ liệu từ nhiều tập hợp bằng cách nhóm hoặc nối chúng, sau đó thực hiện nhiều thao tác khác nhau (được giải thích sau trong tài liệu này) rồi trả về kết quả được tính toán

Hãy lấy một ví dụ về truy vấn tìm kiếm,

find()
0

Bây giờ hãy kiểm tra định dạng của một truy vấn tổng hợp,

find()
1

Vì vậy, bạn có thể thấy truy vấn tổng hợp nâng cao hơn nhiều so với truy vấn tìm và cũng có thể thực hiện các thao tác thao tác dữ liệu trên dữ liệu đã lọc, không giống như truy vấn tìm trong đó một truy vấn bị giới hạn chỉ truy xuất dữ liệu

Giai đoạn đường ống tổng hợp

Trong mọi truy vấn tổng hợp, đường dẫn đã nêu xuất hiện dưới dạng một mảng, trong đó tất cả các hoạt động được đặt tuần tự. Chúng được gọi là Giai đoạn đường ống tổng hợp, trong bài viết này, chúng tôi sẽ đề cập đến những giai đoạn đó là giai đoạn

Tùy chọn truy vấn tổng hợp khác nhau

Chúng ta sẽ thảo luận về tất cả các toán tử khác nhau có sẵn trong truy vấn tổng hợp. Dưới đây là sơ đồ của cơ sở dữ liệu đơn giản mà chúng tôi sẽ thực hiện tất cả các truy vấn,

Bộ sưu tập và Cấu trúc dữ liệu mà chúng tôi sẽ sử dụng cho tất cả các ví dụ

$match

Hoạt động này là để đọc dữ liệu từ một bộ sưu tập dựa trên một biểu thức phù hợp tương tự như truy vấn find(). Sự khác biệt duy nhất là ở đây quá trình lọc diễn ra thông qua biểu thức truy vấn $expr ( {$expr. {$eq. [‘_id’, ‘123' ] } } ) thay vì biểu thức thô ( { _id. ‘123’ } ) như trong phương thức tìm

Vì vậy, để lấy bản ghi của người dùng có id 123 từ bộ sưu tập Người dùng, bên dưới sẽ là truy vấn tổng hợp,

find()
2

$eq là toán tử khớp ở đây, khớp với ID. Tương tự, chúng ta có thể sử dụng $ne để chọn các tài liệu có giá trị của các khóa không giống với giá trị đã chỉ định

tra cứu $

Tra cứu là giai đoạn thực hiện nối ngoài bên trái với một bộ sưu tập khác và lọc dữ liệu từ các tài liệu đã nối

Vì vậy, trong trường hợp của chúng tôi, nếu chúng tôi muốn nhận tất cả các đơn đặt hàng có tên người dùng, thì chúng tôi có thể sử dụng truy vấn bên dưới,

find()
3

Bây giờ trong truy vấn này, tham số đầu tiên 'từ' chỉ định bộ sưu tập sẽ được kết hợp với bộ sưu tập hiện tại, sau đó 'localField' chỉ định khóa hiện có trong bộ sưu tập hiện tại sẽ khớp với khóa ngoại trong bộ sưu tập khác thông qua . Tại đây, User_ID từ Đơn đặt hàng và ID từ Người dùng được khớp và tham gia để lấy dữ liệu. Cuối cùng, 'as' được sử dụng làm bí danh cho dữ liệu

Một điểm cần lưu ý ở đây là, trong mỗi bản ghi đầu ra từ tra cứu, dữ liệu từ bảng đã tham gia được đưa vào bên trong một mảng dưới dạng phần tử đầu tiên, mỗi một hàng từ dữ liệu đầu ra của truy vấn trên sẽ trông như thế nào,

find()
4

Ở đây trong mảng Khách hàng, phần tử đầu tiên sẽ là dữ liệu chúng ta đã nối

đường ống

Để tham gia các bộ sưu tập với các điều kiện cụ thể yêu cầu biểu thức, chúng tôi sử dụng đường dẫn cùng với $lookup

Vì vậy, nếu chúng tôi muốn nhận được tất cả người dùng với đơn đặt hàng của họ có số lượng lớn hơn 5,

find()
5

Vì vậy, bằng cách sử dụng đường ống bên trong $lookup, chúng ta có thể dễ dàng tham gia các bảng theo bất kỳ điều kiện nào

thư giãn $

Yêu thích cá nhân của tôi, toán tử $unwind làm phẳng bất kỳ mảng nào và đính kèm mảng đó vào tài liệu đầu ra. Vì vậy, truy vấn bên dưới ( giống như truy vấn chúng tôi đã sử dụng trong $lookup ),

find()
6

sẽ cho kết quả

find()
7

Sự khác biệt cơ bản ở đây là $unwind chuyển đổi mảng chứa một phần tử thành một đối tượng phẳng là chính phần tử đó, có cùng tên

find()
8

$addFields

Bây giờ nhiều người sẽ nghĩ điều gì sẽ xảy ra nếu tôi chỉ muốn Khách hàng. Đặt tên nhưng ở cấp gốc của tài liệu để chúng tôi có thể truy cập nó như bên dưới,

find()
9

Rất tiếc, $unwind không thể làm điều này. /

Có siêu anh hùng được gọi là $addFields, bằng cách sử dụng giai đoạn cụ thể này, chúng ta có thể gán bất kỳ dữ liệu nào từ bên trong một đối tượng/mảng cho cấp gốc của tài liệu

Vì vậy, để có được Tên khách hàng như đã đề cập ở trên, chúng ta có thể viết một cái gì đó như -

find()
10

dự án $

Dự án về cơ bản là một giai đoạn lọc trong các truy vấn tổng hợp, nó cho biết các trường nào sẽ được lưu trong tài liệu cuối cùng

Để đưa ra một ví dụ, trong ví dụ trước, chúng ta đã thấy cách chúng ta có thể lấy một Customer_Name làm phẳng bên ngoài đối tượng Customer trong bộ dữ liệu kết quả, tuy nhiên, thuộc tính Customer vẫn sẽ ở đó

Vì chúng tôi đã có Customer_Name, đối tượng Customer không còn cần thiết nữa, vì vậy chúng tôi phải xóa nó và chúng tôi sẽ chỉ giữ lại Tên khách hàng, Số lượng đặt hàng và Item_ID trong đầu ra. Chúng ta có thể làm điều đó bằng cách sử dụng $project,

find()
11

Bây giờ truy vấn trên sẽ cho chúng ta kết quả như thế nào,

find()
12

Tham gia hơn 2 Bộ sưu tập bằng MongoDB Aggregation

Bây giờ có Item_ID trong dữ liệu đầu ra, dữ liệu này không thể đọc được và nếu đó là tên của Mục, thì việc nhận biết dữ liệu đó sẽ dễ dàng hơn nhiều. Hãy làm điều đó,

find()
13

Dưới đây là bảng cheat MongoDB Aggregation có thể rất hữu ích

Được rồi, chúng ta đã học được một số thao tác và giai đoạn quan trọng nhất đối với Tập hợp MongoDB, vui lòng đặt bất kỳ câu hỏi nào trong phần nhận xét, tôi sẽ rất sẵn lòng trả lời những câu hỏi đó.

Làm cách nào để tìm nạp dữ liệu từ một bộ sưu tập khác trong MongoDB?

Để thực hiện MongoDB Tham gia hai bộ sưu tập, bạn phải sử dụng toán tử tra cứu $ . Nó được định nghĩa là một giai đoạn thực hiện nối ngoài bên trái với một bộ sưu tập khác và hỗ trợ lọc dữ liệu từ các tài liệu đã nối. Ví dụ: nếu người dùng yêu cầu tất cả các điểm từ tất cả học sinh, thì truy vấn bên dưới có thể được viết. Sinh viên.

Làm cách nào để tìm dữ liệu từ MongoDB?

Phương thức Find() . 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ả về 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.

Phương pháp nào được sử dụng để truy vấn dữ liệu từ bộ sưu tập MongoDB?

Để truy vấn dữ liệu từ bộ sưu tập MongoDB, bạn cần sử dụng phương thức find() của MongoDB.