Có chế độ xem trong MongoDB không?

Tạo chế độ xem là kết quả của việc áp dụng đã chỉ định cho bộ sưu tập hoặc chế độ xem nguồn. Lượt xem đóng vai trò là bộ sưu tập chỉ đọc và được tính toán theo yêu cầu trong quá trình đọc. MongoDB thực thi các thao tác đọc trên các khung nhìn như một phần của quy trình tổng hợp cơ bản

db db. createView có cú pháp như sau.

db.createView(<view>, <source>, <pipeline>, <options>)

Phương thức chấp nhận các tham số sau

ParameterTypeDescription view stringTên của view cần tạo. nguồn stringTên của bộ sưu tập nguồn hoặc chế độ xem để tạo chế độ xem từ đó. Tên không phải là không gian tên đầy đủ của bộ sưu tập hoặc chế độ xem; . e. không bao gồm tên cơ sở dữ liệu và ngụ ý cơ sở dữ liệu giống như dạng xem để tạo. đường dẫnmảng

Một mảng bao gồm. db. createView tạo chế độ xem bằng cách áp dụng đường dẫn đã chỉ định cho nguồn . . . . . . . . . . . . collection or view.

Định nghĩa chế độ xem là công khai; . e. và giải thích các thao tác trên chế độ xem sẽ bao gồm đường dẫn xác định chế độ xem. Như vậy, tránh đề cập trực tiếp đến các trường và giá trị nhạy cảm trong định nghĩa dạng xem.

tùy chọntài liệuTùy chọn. Tùy chọn bổ sung cho phương pháp

Tài liệu tùy chọn chứa trường tùy chọn sau

FieldTypeDescription đối chiếutài liệu

Không bắt buộc. Chỉ định cho chế độ xem

So sánh chuỗi trên dạng xem sử dụng đối chiếu mặc định của dạng xem. Một thao tác cố gắng thay đổi hoặc ghi đè đối chiếu mặc định của chế độ xem sẽ không thành công với lỗi

Đối chiếu cho phép người dùng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi, chẳng hạn như quy tắc cho chữ cái và dấu trọng âm

Nếu nguồn cơ bản là một bộ sưu tập, chế độ xem không kế thừa cài đặt đối chiếu của bộ sưu tập.

Nếu nguồn cơ bản là một chế độ xem khác, thì chế độ xem đó phải chỉ định cùng một cài đặt đối chiếu.

Tùy chọn đối chiếu có cú pháp sau

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

Khi chỉ định đối chiếu, trường ngôn ngữ là bắt buộc; . Để biết mô tả về các trường, xem.

3. 4 新版功能

db db. phương thức createView() kết thúc thao tác lệnh sau.

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )

Các hoạt động liệt kê các bộ sưu tập, chẳng hạn như và , bao gồm các dạng xem trong kết quả đầu ra của chúng

重要

Định nghĩa chế độ xem là công khai; . e. và giải thích các thao tác trên chế độ xem sẽ bao gồm đường dẫn xác định chế độ xem. Như vậy, tránh đề cập trực tiếp đến các trường và giá trị nhạy cảm trong định nghĩa dạng xem.

Để xóa chế độ xem, hãy sử dụng phương thức trên chế độ xem

Cư xử

Lượt xem thể hiện hành vi sau

  • Chế độ xem chỉ đọc;
  • Lượt xem sử dụng chỉ mục của bộ sưu tập cơ bản
  • Chế độ xem được coi là bị phân mảnh nếu bộ sưu tập cơ bản của chúng bị phân mảnh. Như vậy, bạn không thể chỉ định chế độ xem phân mảnh cho trường từ trong và hoạt động.
  • Các lượt xem được tính toán theo yêu cầu trong các thao tác đọc và MongoDB thực thi các thao tác đọc trên các lượt xem như một phần của quy trình tổng hợp cơ bản. Như vậy, các khung nhìn không hỗ trợ các hoạt động như
    • ,
    • , vì phép toán $text trong tập hợp chỉ hợp lệ cho giai đoạn đầu tiên,
    • giai đoạn chỉ huy và đường ống
  • các thao tác trên các khung nhìn không hỗ trợ các toán tử chiếu sau
  • Nếu quy trình tổng hợp được sử dụng để tạo chế độ xem chặn trường _id , tài liệu trong chế độ xem không có _id field.
  • Bạn không thể đổi tên chế độ xem
  • So sánh chuỗi trên dạng xem sử dụng đối chiếu mặc định của dạng xem. Một thao tác cố gắng thay đổi hoặc ghi đè đối chiếu mặc định của chế độ xem sẽ không thành công với lỗi

ví dụ

Tạo Chế độ xem từ một Bộ sưu tập đơn

Cho một bộ sưu tập khảo sát với các tài liệu sau.

{ _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" }
{ _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" }
{ _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" }

Thao tác sau đây tạo chế độ xem managerRatings với _id, feedback.managementbộ phận .

db.createView(
   "managementFeedback",
   "survey",
   [ { $project: { "management": "$feedback.management", department: 1 } } ]
)

Truy vấn một View

Để truy vấn chế độ xem, bạn có thể sử dụng trên chế độ xem

db.managementFeedback.find()

Hoạt động trả về các tài liệu sau

{ "_id" : 1, "department" : "A", "management" : 3 }
{ "_id" : 2, "department" : "B", "management" : 2 }
{ "_id" : 3, "department" : "A", "management" : 3 }

Thực hiện Aggregation Pipeline trên View

Thao tác sau đây thực hiện tổng hợp trên chế độ xem phản hồi quản lý , sử dụng $sortByCount to group by the department field and sort in descending order by the count of each distinct department:

db.managementFeedback.aggregate([ { $sortByCount: "$department" } ] )

Hoạt động trả về các tài liệu sau

________số 8_______

Tạo Chế độ xem từ nhiều Bộ sưu tập

Cho hai tập hợp sau

  • Bộ sưu tập đơn đặt hàng .

    { "_id" : 1, "item" : "abc", "price" : NumberDecimal("12.00"), "quantity" : 2 }
    { "_id" : 2, "item" : "jkl", "price" : NumberDecimal("20.00"), "quantity" : 1 }
    { "_id" : 3, "item" : "abc", "price" : NumberDecimal("10.95"), "quantity" : 5 }
    { "_id" : 4, "item" : "xyz", "price" : NumberDecimal("5.95"), "quantity" : 5 }
    { "_id" : 5, "item" : "xyz", "price" : NumberDecimal("5.95"), "quantity" : 10 }
    

  • Bộ sưu tập khoảng không quảng cáo .

    collation: {
       locale: <string>,
       caseLevel: <boolean>,
       caseFirst: <string>,
       strength: <int>,
       numericOrdering: <boolean>,
       alternate: <string>,
       maxVariable: <string>,
       backwards: <boolean>
    }
    
    0

db sau db. ví dụ createView() chỉ định một giai đoạn để tạo chế độ xem từ sự kết hợp của hai bộ sưu tập.

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
1

Truy vấn một View

Để truy vấn chế độ xem, bạn có thể sử dụng trên chế độ xem

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
2

Hoạt động trả về các tài liệu sau

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
3

Thực hiện Aggregation Pipeline trên View

Thao tác sau đây thực hiện tổng hợp trên chế độ xem orderDetails , sử dụng $sortByCount to group by the item field and sort in descending order by the count of each distinct item:

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
4

Hoạt động trả về các tài liệu sau

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
5

Tạo Chế độ xem với Đối chiếu Mặc định

Cho bộ sưu tập địa điểm với tài liệu sau.

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
6

Thao tác sau đây tạo chế độ xem, chỉ định ở cấp độ chế độ xem

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
7

So sánh chuỗi trên dạng xem sử dụng đối chiếu mặc định của dạng xem. Ví dụ: thao tác sau sử dụng đối chiếu của chế độ xem

collation: {
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}
8

Thao tác trả về 3 .

Một thao tác cố gắng thay đổi hoặc ghi đè đối chiếu mặc định của chế độ xem sẽ không thành công với lỗi

←   db. createCollection() db. currentOp()  →

© MongoDB, Inc 2008-2017. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc

Làm cách nào để xem dữ liệu được lưu trữ trong MongoDB?

Cơ sở dữ liệu→
Tìm kiếm→
Hồ dữ liệu (Xem trước)→
Biểu đồ→
Đồng bộ hóa thiết bị→
API, Trình kích hoạt, Chức năng→

NoSQL có chế độ xem không?

Các bản ghi trong cơ sở dữ liệu SQL được truy xuất bằng các truy vấn, trong khi kho lưu trữ tài liệu NoSQL sử dụng các dạng xem . Người ta có thể nghĩ về một chế độ xem đại khái như một bộ lọc xác định tài liệu nào trong một vùng chứa mà khách hàng sẽ thấy.