MongoDB riêng biệt

Một trong những hoạt động quan trọng nhất trong bất kỳ loại cơ sở dữ liệu nào là truy xuất dữ liệu. Dữ liệu có thể được truy xuất cùng một lúc hoặc được lọc. MongoDB cung cấp thao tác tìm để lấy dữ liệu. Dữ liệu được lưu trữ trong các tài liệu, do đó được lưu trữ trong các bộ sưu tập. Theo mặc định, thao tác tìm sẽ lấy tất cả các tài liệu trong một bộ sưu tập. Chúng tôi cũng có thể lọc dữ liệu bằng truy vấn và phép chiếu trong thao tác tìm. Ngoài thao tác tìm, còn có một thao tác khác trả về một mảng gồm tất cả các giá trị riêng biệt của trường đã cho. Hoạt động này được gọi là khác biệt. Trong bài viết này, chúng ta sẽ thảo luận về các hoạt động tìm kiếm và phân biệt MongoDB với các ví dụ

tìm hoạt động

Thao tác tìm là thao tác chính để truy xuất dữ liệu từ một bộ sưu tập. Hãy xem cú pháp của thao tác tìm

db. tìm thấy()

Sử dụng thao tác tìm theo cách này sẽ dẫn đến tất cả các tài liệu có trong bộ sưu tập. Hãy xem nó hoạt động như thế nào

> db. chi tiết. tìm()
{ "_id". ObjectId("5d6545866e08386d93a75157"), "tên". "John", "tuổi". 21, "vị trí". "New York" }
{ "_id". ObjectId("5d6545916e08386d93a75158"), "tên". "Sâm", "tuổi". 25, "vị trí". "Texas" }
{ "_id". ObjectId("5d6545a06e08386d93a75159"), "tên". "Lisa", "tuổi". 23, "vị trí". "Chicago" }
{ "_id". ObjectId("5d6545da6e08386d93a7515a"), "tên". "Ron", "tuổi". 26, "vị trí". "Chicago" }
{ "_id". ObjectId("5d6545e56e08386d93a7515b"), "tên". "Đánh dấu", "tuổi". 29, "vị trí". "Texas" }
>

Trong lệnh trên, chúng tôi sử dụng thao tác tìm với bộ sưu tập chi tiết. Điều này dẫn đến tất cả các tài liệu có trong đó. Nhưng để đọc rõ ràng hơn nhiều, chúng ta có thể sử dụng thao tác đẹp với thao tác tìm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

> db. chi tiết. tìm thấy(). xinh()
{
        "_id". ObjectId("5d6545866e08386d93a75157"),
        "tên". "John",
        "tuổi". 21,
        "vị trí". "New York"
}
{
        "_id". ObjectId("5d6545916e08386d93a75158"),
        "tên". "Sam",
        "tuổi". 25,
        "vị trí". "Texas"
}
{
        "_id". ObjectId("5d6545a06e08386d93a75159"),
        "tên". "Lisa",
        "tuổi". 23,
        "vị trí". "Chicago"
}
{
        "_id". ObjectId("5d6545da6e08386d93a7515a"),
        "tên". "Ron",
        "tuổi". 26,
        "vị trí". "Chicago"
}
{
        "_id". ObjectId("5d6545e56e08386d93a7515b"),
        "tên". "Đánh dấu",
        "tuổi". 29,
        "vị trí". "Texas"
}
>

Điều này có vẻ tốt hơn bây giờ. Bây giờ hãy thảo luận về phần truy vấn và phép chiếu

Truy vấn và chiếu

Truy vấn thực sự là một điều kiện theo đó thao tác tìm sẽ khớp với các tài liệu. Nó sẽ chỉ trả về những tài liệu có phần truy vấn phù hợp. Giả sử từ bộ sưu tập chi tiết của chúng tôi, chúng tôi muốn truy xuất tài liệu có vị trí là Texas. Hãy xem làm thế nào chúng ta có thể làm điều này

> db. chi tiết. tìm ({"vị trí". "Texas"}). xinh()
{
        "_id". ObjectId("5d6545916e08386d93a75158"),
        "tên". "Sam",
        "tuổi". 25,
        "vị trí". "Texas"
}
{
        "_id". ObjectId("5d6545e56e08386d93a7515b"),
        "tên". "Đánh dấu",
        "tuổi". 29,
        "vị trí". "Texas"
}
>

Đúng. Chúng tôi đã nhận được tất cả các tài liệu có địa điểm là Texas. Chú ý đến lệnh

db. chi tiết. tìm ({ vị trí. "Texas" }). khá();

Khi chúng tôi sử dụng thao tác tìm trước đó, chúng tôi đã không chuyển bất kỳ thứ gì. Nhưng khi phải lọc dữ liệu theo một điều kiện nào đó, chúng ta phải chuyển điều kiện đó cho phép tìm được đặt trong dấu ngoặc nhọn. Có rất nhiều lựa chọn cho truy vấn. Chúng tôi có thể lọc theo một giá trị cụ thể hoặc bằng cách sử dụng các toán tử như lớn hơn hoặc nhỏ hơn và nhiều tùy chọn khác có sẵn. Nhưng cũng có một tham số thứ hai cho thao tác tìm. Đây được gọi là phép chiếu

Phép chiếu chỉ định những trường nào chúng tôi muốn trả về. Theo mặc định, mọi trường của tài liệu được trả về bằng thao tác tìm. Nhưng chúng ta luôn có thể chỉ định các trường được trả về bằng cách xác định phép chiếu

> db. chi tiết. tìm ID. 0, tên. 1}). xinh()
{ "tên". "John" }
{ "tên". "Sam" }
{ "tên". "Lisa" }
{ "tên". "Ron" }
{ "tên". "Đánh dấu" }
>

Quan sát lệnh trên và kết quả. Trong thao tác tìm kiếm, chúng tôi đã chuyển hai tham số - tập hợp các dấu ngoặc nhọn trống đầu tiên và thứ hai, một tập hợp các dấu ngoặc nhọn khác, lần này có nội dung được viết bên trong. Phần thứ hai là hình chiếu. Phần trống là truy vấn. Chúng tôi không chỉ định bất kỳ truy vấn nào ở đây nhưng cần phải chuyển tham số đầu tiên trong khi sử dụng các phép chiếu. Hình chiếu luôn là tham số thứ hai của thao tác tìm

Phép chiếu trên sẽ chỉ trả về trường tên trong mọi tài liệu. Chúng tôi đặt giá trị của tên là 1. Điều này có nghĩa là chỉ trường tên sẽ trả về. Nhưng chúng tôi cũng đặt giá trị của _id là 0. Chúng tôi phải làm điều này bởi vì, theo mặc định, thao tác tìm kiếm sẽ luôn trả về trường _id

Kết hợp truy vấn và chiếu

Hãy xem một ví dụ về thao tác tìm với sự kết hợp của truy vấn và phép chiếu

> db. chi tiết. tìm ({vị trí. "Texas"},{_id. 0, tên. 1 tuổi. 1}). xinh()
{ "tên". "Sâm", "tuổi". 25 }
{ "tên". "Đánh dấu", "tuổi". 29 }
>

Thao tác tìm ở trên trả về tên và tuổi của tất cả các tài liệu có vị trí là Texas

hoạt động riêng biệt

Thao tác riêng biệt hơi khác so với thao tác tìm. riêng biệt trả về một mảng gồm tất cả các giá trị riêng biệt của trường được chỉ định. Có thể có hàng ngàn tài liệu trong một bộ sưu tập. Có thể có các trường phổ biến trong tất cả các tài liệu và các trường này có thể có các giá trị tương tự nhau. Đây là nơi khác biệt là hữu ích. Hãy xem cú pháp của hoạt động riêng biệt

db. riêng biệt()

Trong hoạt động riêng biệt, cần phải chuyển tên trường nếu không sẽ dẫn đến lỗi. Hãy hiểu hoạt động riêng biệt với sự trợ giúp của một ví dụ

> db. chi tiết. riêng biệt("địa điểm")
[ "New York", "Texas", "Chicago" ]
>

Lệnh trên trả về tất cả các vị trí riêng biệt. Chúng tôi có năm tài liệu trong bộ sưu tập chi tiết nhưng mảng được trả về chỉ chứa ba giá trị. Điều này có nghĩa là có các tài liệu có cùng vị trí. Đây là cách hoạt động riêng biệt trong MongoDB

Truy vấn

Cùng với tên trường, chúng ta cũng có thể chuyển một truy vấn với nó. Nó tương tự như phần truy vấn của thao tác tìm. Sự khác biệt sẽ không kiểm tra xem truy vấn không khớp ở đâu. Hãy hiểu điều này với sự giúp đỡ của một ví dụ

> db. chi tiết. riêng biệt ("vị trí", {"tên". "John"})
[ "New York" ]
>

Lệnh trên sẽ chỉ tìm các vị trí riêng biệt có tên là John

Phần kết luận

Cả thao tác tìm và phân biệt đều rất hữu ích khi truy xuất dữ liệu từ MongoDB. Thao tác tìm trả về tất cả dữ liệu cùng một lúc hoặc theo truy vấn và phép chiếu. Hoạt động riêng biệt có chức năng đặc biệt là truy xuất các giá trị duy nhất của một trường được chỉ định

Điều gì khác biệt trong MongoDB?

Trong MongoDB, phương thức differ() tìm các giá trị riêng biệt cho một trường nhất định trong một tập hợp và trả về kết quả trong một mảng . Phải mất ba tham số đầu tiên là trường trả về các giá trị riêng biệt và các tham số khác là tùy chọn.

Làm cách nào để nhận các giá trị riêng biệt trong MongoDB bằng Java?

Bạn có thể truy xuất danh sách các giá trị riêng biệt cho một trường trong bộ sưu tập bằng cách gọi phương thức differ() trên đối tượng MongoCollection . Chuyển tên trường tài liệu làm tham số đầu tiên và lớp bạn muốn chuyển kết quả thành tham số thứ hai như được hiển thị bên dưới. thu thập. khác biệt ("quốc gia", Chuỗi.

Chúng ta có thể sử dụng khác biệt với find trong MongoDB không?

Cả hai thao tác tìm và phân biệt đều rất hữu ích khi truy xuất dữ liệu từ MongoDB . Thao tác tìm trả về tất cả dữ liệu cùng một lúc hoặc theo truy vấn và phép chiếu. Hoạt động riêng biệt có chức năng đặc biệt là truy xuất các giá trị duy nhất của một trường được chỉ định.

Làm cách nào để nhận các giá trị riêng biệt trong tập hợp MongoDB?

3 cách trả về giá trị riêng biệt trong MongoDB .
Dữ liệu mẫu. .
Phương thức khác biệt (). .
Lệnh riêng biệt. .
Toán tử tập hợp $group