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.

Tôi đã nhận thấy rằng nếu ID tài liệu MongoDB của tôi có

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
7, ví dụ:
{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
8 Tôi có thể nhận được kết quả từ việc thực hiện
{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
9.

Tuy nhiên, nếu ID đó chỉ là một chuỗi như

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
0 thì
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
1 không trả về không có gì.

Kho lưu trữ trông như thế này:

@Repository
interface MyRepository : MongoRepository

Và bài hát đó trông như thế này:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}

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

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
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ừ
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
3. MongoDB hỗ trợ các chuỗi đơn giản cho trường
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
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
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
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

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
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
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]
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ượt

Hướ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ấn

Mộ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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}

Bây giờ chúng ta hãy xem mã truy vấn:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];

Đúng như dự đoán, logic này trả về:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}

2.2. REGEX

Mộ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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]

Bây giờ chúng ta hãy tạo truy vấn:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].regex["^A"]];
List users = mongoTemplate.find[query,User.class];

Điều này chạy và trả về 2 bản ghi:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]

Đâ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:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].regex["c$"]];
List users = mongoTemplate.find[query, User.class];

Vì vậy, kết quả sẽ là:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}

2.3. LT và GT

Cá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à:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}

Mã truy vấn:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
1

Và kết quả cho tất cả người dùng có độ tuổi lớn hơn 20 và dưới 50:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}

2.4. Loại

Sắ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ó:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
3

Sau khi thực hiện sắp xếp:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
4

Và đây là kết quả của truy vấn, được sắp xếp độc đáo theo độ tuổi:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
5

2.5. Có thể nguyền rủa

Hã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:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
3

Bây giờ đây là logic truy vấn, chỉ cần yêu cầu một trang có kích thước 2:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
7

Và kết quả, 2 tài liệu, như mong đợi:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
8

3. Phương thức truy vấn được tạo

Bâ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ữ:

@Document[collection = Song.COLLECTION]
data class Song[
    @Id
    val id: String,

    val title: String
] {
    companion object {
        const val COLLECTION: String = "song"
    }
}
9

3.1. FindByx

Chú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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
0

Giố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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
1

3.2. Bắt đầu và kết thúc

Trong 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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
2
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
3

Ví dụ về việc sử dụng điều này, tất nhiên, sẽ rất đơn giản:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
4
[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
5

Và kết quả là chính xác giống nhau.

3.3. Giữa

Tươ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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
6

Gọ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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
7

3.4. Thích và Orderby

Chú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:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581907"],
        "_class" : "org.baeldung.model.User",
        "name" : "Eric",
        "age" : 45
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 55
    }
}
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à:

[
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581908"],
        "_class" : "org.baeldung.model.User",
        "name" : "Antony",
        "age" : 33
    },
    {
        "_id" : ObjectId["55c0e5e5511f0a164a581909"],
        "_class" : "org.baeldung.model.User",
        "name" : "Alice",
        "age" : 35
    }
]

4. Phương pháp truy vấn JSON

Nế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ếm

Hã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:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
0

Phươ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.

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
1

4.2. $ regex

Chú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:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
2

Việc sử dụng cũng giống hệt nhau:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
3
Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
4

4.3. $ lt và $ gt

Bây giờ chúng ta hãy thực hiện truy vấn LT và GT:lt and gt query:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
5

Bâ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:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
6

5. Truy vấn QueryDSL

Mongorepository 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 maven

Trướ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:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
7

5.2. Q-Classes

QueryDSL đã 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 đó:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
8

Chúng ta hãy xem lớp người dùng, tập trung cụ thể vào chú thích @QueryEntity:

Query query = new Query[];
query.addCriteria[Criteria.where["name"].is["Eric"]];
List users = mongoTemplate.find[query, User.class];
9

Sau 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}:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
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:

Bạn cần chạy bản dựng với JDK hoặc có công cụ.jar trên đường dẫn lớp. Nếu điều này xảy ra trong quá trình xây dựng Eclipse, hãy đảm bảo bạn chạy Eclipse theo JDK

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:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
1

5.3. Kho lưu trữ mới

Bâ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:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
2

5.4. Phương trình

Vớ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:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
3

5.5. Bắt đầu và kết thúc

Tươ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:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
4

Cũng như kết thúc với C:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
5

Kết quả giống như trong Phần 2.2, 3.2 và 4.2.

5.6. Giữa

Truy 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:

{
    "_id" : ObjectId["55c0e5e5511f0a164a581907"],
    "_class" : "org.baeldung.model.User",
    "name" : "Eric",
    "age" : 45
}
6

6. Kết luận

Trong 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.

Bài Viết Liên Quan

Chủ Đề