Hướng dẫn find by objectid mongodb spring boot - tìm bởi objectid mongodb khởi động mùa xuân
Tôi có một dịch vụ biểu đồ khởi động mùa xuân đọc từ Mongo. Show
Tôi đã nhận thấy rằng nếu ID tài liệu MongoDB của tôi có 7, ví dụ: 8 Tôi có thể nhận được kết quả từ việc thực hiện 9.Tuy nhiên, nếu ID đó chỉ là một chuỗi như 0 thì 1 không trả về không có gì.Kho lưu trữ trông như thế này:
Và bài hát đó trông như thế này:
Bất kỳ ý tưởng? Thanks. hỏi ngày 26 tháng 2 năm 2020 lúc 6:02Feb 26, 2020 at 6:02
Xem tham chiếu MongoDB dữ liệu lò xo trên ánh xạ - Trường 2 được xử lý đặc biệt. Nếu đó là loại chuỗi hoặc BigInteger, nó sẽ tự động được chuyển đổi thành/từ 3. MongoDB hỗ trợ các chuỗi đơn giản cho trường 2 đặc biệt, vì vậy nếu bạn chèn các tài liệu không đi qua dữ liệu lò xo (hoặc chèn tài liệu dưới dạng chuỗi JSON thô để trình điều khiển MongoDB chèn) thì MongoDB sẽ không tự động chuyển đổi chuỗi đến 3 - nó sẽ lưu trữ chúng dưới dạng chuỗi.Vì vậy, nếu bạn chèn tài liệu 6 vào DB của bạn, bản đồ MongoDB dữ liệu Spring sẽ không thể tìm thấy nó, bởi vì nó sẽ chỉ tìm kiếm bởi 3.Đã trả lời ngày 26 tháng 2 năm 2020 lúc 6:24Feb 26, 2020 at 6:24
Logan Pickuplogan PickupLogan Pickup 2.2452 Huy hiệu vàng22 Huy hiệu bạc29 Huy hiệu đồng2 gold badges22 silver badges29 bronze badges 1 1. Sơ lượtHướng dẫn này sẽ tập trung vào việc xây dựng các loại truy vấn khác nhau trong Dữ liệu mùa xuân MongoDB.types of queries in Spring Data MongoDB. Chúng tôi sẽ xem xét các tài liệu truy vấn với các lớp truy vấn và tiêu chí, phương thức truy vấn được tạo tự động, truy vấn JSON và QueryDSL. Đối với thiết lập Maven, hãy xem bài viết giới thiệu của chúng tôi. 2. Tài liệu truy vấnMột trong những cách phổ biến hơn để truy vấn MongoDB với dữ liệu lò xo là bằng cách sử dụng các lớp truy vấn và tiêu chí, mà các toán tử bản địa phản ánh rất chặt chẽ. 2.1. LàĐây chỉ đơn giản là một tiêu chí sử dụng bình đẳng. Hãy xem nó hoạt động như thế nào. Trong ví dụ sau, chúng tôi sẽ tìm người dùng có tên ERIC. Hãy xem cơ sở dữ liệu của chúng tôi:
Bây giờ chúng ta hãy xem mã truy vấn:
Đúng như dự đoán, logic này trả về:
2.2. REGEXMột loại truy vấn linh hoạt và mạnh mẽ hơn là Regex. Điều này tạo ra một tiêu chí bằng cách sử dụng MongoDB $ regex trả về tất cả các bản ghi phù hợp cho Regex cho lĩnh vực này. Nó hoạt động tương tự như khởi động và kết thúc hoạt động. Trong ví dụ này, chúng tôi sẽ tìm kiếm tất cả người dùng có tên bắt đầu bằng A. Đây là trạng thái của cơ sở dữ liệu:
Bây giờ chúng ta hãy tạo truy vấn:
Điều này chạy và trả về 2 bản ghi:
Đây là một ví dụ nhanh khác, lần này tìm kiếm tất cả người dùng có tên kết thúc bằng C:
Vì vậy, kết quả sẽ là:
2.3. LT và GTCác toán tử này tạo ra một tiêu chí bằng các toán tử $ LT (nhỏ hơn) và $ gt (lớn hơn). Chúng ta hãy lấy một ví dụ nhanh trong đó chúng ta đang tìm kiếm tất cả người dùng trong độ tuổi từ 20 đến 50. Cơ sở dữ liệu là:
Mã truy vấn: 1Và kết quả cho tất cả người dùng có độ tuổi lớn hơn 20 và dưới 50:
2.4. LoạiSắp xếp được sử dụng để chỉ định một thứ tự sắp xếp cho kết quả. Ví dụ dưới đây trả về tất cả người dùng được sắp xếp theo độ tuổi theo thứ tự tăng dần. Đầu tiên, đây là dữ liệu hiện có: 3Sau khi thực hiện sắp xếp: 4Và đây là kết quả của truy vấn, được sắp xếp độc đáo theo độ tuổi: 52.5. Có thể nguyền rủaHãy xem xét một ví dụ nhanh bằng cách sử dụng phân trang. Đây là trạng thái của cơ sở dữ liệu: 3Bây giờ đây là logic truy vấn, chỉ cần yêu cầu một trang có kích thước 2: 7Và kết quả, 2 tài liệu, như mong đợi: 83. Phương thức truy vấn được tạoBây giờ chúng ta hãy khám phá loại truy vấn phổ biến hơn mà dữ liệu Spring thường cung cấp, các truy vấn được tạo tự động từ các tên phương thức. Điều duy nhất chúng ta cần làm để tận dụng các loại truy vấn này là khai báo phương thức trên giao diện kho lưu trữ: 93.1. FindByxChúng ta sẽ bắt đầu đơn giản, bằng cách khám phá loại truy vấn Findby. Trong trường hợp này, chúng tôi sẽ sử dụng tìm theo tên: 0Giống như trong phần trước, 2.1, truy vấn sẽ có cùng kết quả, tìm tất cả người dùng có tên đã cho: 13.2. Bắt đầu và kết thúcTrong Phần 2.2, chúng tôi đã khám phá một truy vấn dựa trên Regex. Khởi đầu và kết thúc với tất nhiên là ít mạnh mẽ hơn, nhưng tuy nhiên khá hữu ích, đặc biệt nếu chúng ta không phải thực sự thực hiện chúng. Đây là một ví dụ nhanh về các hoạt động sẽ như thế nào: 2 3Ví dụ về việc sử dụng điều này, tất nhiên, sẽ rất đơn giản: 4 5Và kết quả là chính xác giống nhau. 3.3. GiữaTương tự như Phần 2.3, điều này sẽ trả về tất cả người dùng có độ tuổi giữa Agegt và Agelt: 6Gọi phương thức sẽ dẫn đến chính xác các tài liệu giống nhau được tìm thấy: 73.4. Thích và OrderbyChúng ta hãy xem một ví dụ nâng cao hơn lần này, kết hợp hai loại sửa đổi cho truy vấn được tạo. Chúng tôi sẽ tìm kiếm tất cả người dùng có tên có chứa chữ A và chúng tôi cũng sẽ đặt hàng kết quả theo độ tuổi, theo thứ tự tăng dần: 8Đối với cơ sở dữ liệu chúng tôi đã sử dụng trong Phần 2.4, kết quả sẽ là:
4. Phương pháp truy vấn JSONNếu chúng ta không thể đại diện cho một truy vấn với sự trợ giúp của một tên hoặc tiêu chí phương thức, chúng ta có thể làm một cái gì đó cấp thấp hơn, hãy sử dụng chú thích @Query.use the @Query annotation. Với chú thích này, chúng tôi có thể chỉ định một truy vấn thô là chuỗi truy vấn Mongo JSON. 4.1. Tìm kiếmHãy bắt đầu đơn giản và nhìn vào cách chúng ta sẽ biểu diễn theo loại phương thức trước:a find by type of method first: 0Phương thức này sẽ trả về người dùng theo tên. Người giữ chỗ? 0 tham chiếu tham số đầu tiên của phương thức. 14.2. $ regexChúng ta cũng có thể xem xét một truy vấn điều khiển Regex, tất nhiên là tạo ra kết quả tương tự như trong Phần 2.2 và 3.2:a regex driven query, which of course produces the same result as in sections 2.2 and 3.2: 2Việc sử dụng cũng giống hệt nhau: 3 44.3. $ lt và $ gtBây giờ chúng ta hãy thực hiện truy vấn LT và GT:lt and gt query: 5Bây giờ phương thức có 2 tham số, chúng tôi đang tham khảo từng tham số theo chỉ mục trong truy vấn thô,? 0 và? 1: 65. Truy vấn QueryDSLMongorepository có hỗ trợ tốt cho dự án QueryDSL, vì vậy chúng tôi cũng có thể tận dụng API an toàn, tốt đẹp đó. 5.1. Các phụ thuộc mavenTrước tiên, hãy đảm bảo rằng chúng tôi có các phụ thuộc maven chính xác được xác định trong POM: 75.2. Q-ClassesQueryDSL đã sử dụng các lớp Q để tạo các truy vấn, nhưng vì chúng tôi không thực sự muốn tạo ra những thứ này bằng tay, chúng tôi cần tạo ra chúng bằng cách nào đó.we need to generate them somehow. Chúng tôi sẽ sử dụng apt-maven-plugin để làm điều đó: 8Chúng ta hãy xem lớp người dùng, tập trung cụ thể vào chú thích @QueryEntity: 9Sau khi chạy mục tiêu quy trình của vòng đời MAVEN (hoặc bất kỳ mục tiêu nào khác sau mục tiêu đó), plugin APT sẽ tạo các lớp mới theo mục tiêu/tạo ra lực/java/{cấu trúc gói của bạn}:will generate the new classes under target/generated-sources/java/{your package structure}: 0Đó là vì lớp này mà chúng ta không cần phải tạo ra các truy vấn của mình. Như một lưu ý phụ, nếu chúng ta đang sử dụng Eclipse, việc giới thiệu plugin này sẽ tạo ra cảnh báo sau trong POM:
Cài đặt Maven hoạt động tốt và lớp QUSER được tạo, nhưng một plugin được tô sáng trong POM. Một bản sửa lỗi nhanh là chỉ thủ công vào JDK trong Eclipse.ini: 15.3. Kho lưu trữ mớiBây giờ chúng tôi cần thực sự bật hỗ trợ QueryDSL trong kho lưu trữ của mình, được thực hiện bằng cách mở rộng giao diện QueryDsLpredateExecutor:extending the QueryDslPredicateExecutor interface: 25.4. Phương trìnhVới hỗ trợ được bật, giờ đây chúng ta hãy thực hiện các truy vấn giống như các truy vấn mà chúng tôi đã minh họa trước đây.let's now implement the same queries as the ones we illustrated before. Chúng ta sẽ bắt đầu với sự bình đẳng đơn giản: 35.5. Bắt đầu và kết thúcTương tự, hãy thực hiện các truy vấn trước đó và tìm người dùng có tên bắt đầu bằng A: 4Cũng như kết thúc với C: 5Kết quả giống như trong Phần 2.2, 3.2 và 4.2. 5.6. GiữaTruy vấn tiếp theo sẽ trả về người dùng với độ tuổi từ 20 đến 50, tương tự như các phần trước: 66. Kết luậnTrong bài viết này, chúng tôi đã khám phá nhiều cách chúng tôi có thể truy vấn bằng Data Data MongoDB. Thật thú vị khi lùi lại một bước và xem tất cả những cách mạnh mẽ mà chúng ta phải truy vấn MongoDB, thay đổi từ kiểm soát hạn chế cho đến kiểm soát hoàn toàn với các truy vấn thô. Việc thực hiện tất cả các ví dụ và đoạn mã này có thể được tìm thấy trong dự án GitHub. Cuối cùng chúng tôi cũng chạy ra một buổi ra mắt Thứ Sáu Đen. Tất cả các khóa học được giảm 30% cho đến ngày 2 tháng 12:30% off until December 2nd: >> Nhận quyền truy cập ngay bây giờKiểu dữ liệu ObjectID trong MongoDB là gì?ObjectID là một loại dữ liệu là một phần của đặc tả BSON mà MongoDB sử dụng để lưu trữ dữ liệu. Đó là một đại diện nhị phân của JSON và bao gồm các loại dữ liệu khác ngoài các loại được xác định trong JSON. Đây là một loại dữ liệu mạnh mẽ cực kỳ hữu ích như một định danh duy nhất trong các tài liệu MongoDB.one data type that is part of the BSON Specification that MongoDB uses for data storage. It is a binary representation of JSON and includes other data types beyond those defined in JSON. It is a powerful data type that is incredibly useful as a unique identifier in MongoDB Documents.
Làm thế nào để MongoDB tạo ra Objectid?Về cơ bản, ObjectID được coi là khóa chính trong bất kỳ bộ sưu tập MongoDB nào.Nó được tạo tự động bất cứ khi nào chúng tôi tạo một tài liệu mới trong một bộ sưu tập mới.Nó dựa trên giá trị thập lục phân 12 byte như bạn có thể quan sát trong cú pháp sau.It is generated automatically whenever we create a new document within a new collection. It is based on a 12-byte hexadecimal value as you can observe in the following syntax.
Sự khác biệt giữa Mongooperations và Mongotemplate là gì?MongoTemplate cung cấp một cách đơn giản để bạn lưu, cập nhật và xóa các đối tượng miền của bạn và ánh xạ các đối tượng đó vào các tài liệu được lưu trữ trong MongoDB.Bạn có thể lưu, cập nhật và xóa đối tượng như hiển thị bên dưới.Mongoperations là giao diện mà Mongotemplate thực hiện.MongoOperations is the interface that MongoTemplate implements.
MongoDB có gia tăng ObjectID không?MongoDB không có chức năng tự động tự động vượt trội, như cơ sở dữ liệu SQL.Theo mặc định, nó sử dụng ObjectID 12 byte cho trường _ID làm khóa chính để xác định duy nhất các tài liệu., like SQL databases. By default, it uses the 12-byte ObjectId for the _id field as the primary key to uniquely identify the documents. |