Chương này sẽ trình bày các kỹ thuật cơ bản để đọc dữ liệu từ MongoDB. Để minh họa cho chương này, chúng ta bắt đầu bằng cách tạo một bộ sưu tập kim cương mới và chèn một tập dữ liệu ví dụ từ gói ggplot2
#> List of 5
#> $ nInserted : num 53940
#> $ nMatched : num 0
#> $ nRemoved : num 0
#> $ nUpserted : num 0
#> $ writeErrors: list[]
Chương tiếp theo giải thích chi tiết hơn về việc chèn dữ liệu. Bây giờ, hãy xác minh tất cả dữ liệu của chúng tôi đã được chèn
#> [1] TRUE
Trông có vẻ tốt
MongoDB sử dụng cú pháp dựa trên JSON để truy vấn tài liệu. Truy vấn trống
#> [1] TRUE
9 có nghĩa là. chọn tất cả dữ liệu. Cùng một tham số truy vấn được sử dụng cho nhiều thao tác, chẳng hạn như #> [1] 53940
0, #> [1] 53940
1, #> [1] 53940
2, #> [1] 53940
3 và #> [1] 53940
4. Chúng ta cần chỉ định truy vấn JSON dưới dạng một chuỗi trong R#> [1] 53940
#> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
Để truy vấn tất cả các hàng có
#> [1] 53940
5 bạn sẽ chạy#> [1] TRUE
1Chúng tôi có thể xác nhận rằng chúng tôi nhận được cùng một tập hợp con trong R
#> [1] TRUE
2#> [1] TRUE
2Để tìm hiểu thêm về các truy vấn dữ liệu mongo, hãy nghiên cứu tài liệu hướng dẫn Mongo Query Documents
Tham số
#> [1] 53940
6 lọc các cột cụ thể từ đầu ra. Hãy tiếp tục ví dụ của chúng tôi ở trên#> [1] TRUE
5Theo mặc định, mongo luôn bao gồm trường
#> [1] 53940
7. Để ngăn chặn điều này, chúng ta cần vô hiệu hóa nó một cách rõ ràng#> [1] TRUE
7Giá trị mặc định cho đối số
#> [1] 53940
8 là #> [1] 53940
9 i. e. tất cả các cột, ngoại trừ #> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
0Tham số
#> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
1 cho phép chúng tôi sắp xếp đầu ra và #> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
2 hạn chế các bản ghi số sẽ được trả về. Ví dụ để trả về 7 viên kim cương cao cấp đắt nhất trong dữ liệu chúng ta sắp xếp theo giá giảm dần#> [1] TRUE
3Lưu ý rằng thông thường bạn chỉ nên sắp xếp theo các trường có chỉ mục được đặt trên chúng. Sắp xếp theo các trường chưa được lập chỉ mục có thể rất chậm và máy chủ có thể đạt đến giới hạn bộ nhớ trên máy chủ
Theo mặc định, một bộ sưu tập chỉ có chỉ mục cho
#> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
0, điều đó có nghĩa là việc chọn hoặc sắp xếp theo bất kỳ trường nào khác tương đối chậm#> [1] TRUE
0Bằng cách thêm một chỉ mục, trường được sắp xếp trước và việc chọn hoặc sắp xếp nó gần như ngay lập tức
#> [1] TRUE
1#> [1] TRUE
2Để tăng tốc các truy vấn liên quan đến nhiều trường, bạn cần thêm một chỉ mục chéo giao cắt cả hai trường
#> [1] TRUE
3____14Để xóa các chỉ mục khỏi bộ sưu tập, hãy sử dụng
#> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
4 như được liệt kê ở trên#> [1] TRUE
3____11Phương pháp
#> [1] 53940
0 tự động đơn giản hóa bộ sưu tập thành khung dữ liệu, nhưng đôi khi bạn cần kiểm soát chi tiết hơn. Phương thức #> [1] 53940
1 cho phép bạn thực hiện truy vấn, nhưng đọc từng bản ghi mà không đơn giản hóaTrình vòng lặp có các phương thức
#> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
7, #> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
8 cho phép bạn duyệt qua một hoặc #> carat cut color clarity depth table price x y z
#> 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
#> 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
#> 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
#> 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
#> 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#> 6 0.24 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
#> 7 0.24 Very Good I VVS1 62.3 57.0 336 3.95 3.98 2.47
#> 8 0.26 Very Good H SI1 61.9 55.0 337 4.07 4.11 2.53
#> 9 0.22 Fair E VS2 65.1 61.0 337 3.87 3.78 2.49
#> 10 0.23 Very Good H VS1 59.4 61.0 338 4.00 4.05 2.39
#> [ reached getOption["max.print"] -- omitted 53930 rows ]
9 bản ghi tại thời điểm đó. Khi iterator hết, nó sẽ trả về #> [1] TRUE
10. Hãy chạy cùng một truy vấn như trên bằng giao diện iterator#> [1] TRUE
7Trình vòng lặp không thực hiện bất kỳ sự đơn giản hóa nào, vì vậy mỗi
#> [1] TRUE
11 chỉ đơn giản là một danh sách được đặt tên chứa bản ghi JSON được phân tích cú phápMỗi bản ghi được chèn vào MongoDB sẽ tự động được gán một giá trị
#> [1] TRUE
12#> [1] TRUE
8Ví dụ, sử dụng toán tử ________ 113 [tương tự như ________ 114 trong mongodb] để chọn một bản ghi theo ID của nó