【发布时间】:2022-01-08 02:32:22
【问题描述】:
使用 MongoDB 驱动程序 4.1.0(和 quarkus 1.1.1),我有一个带有复合 _id 的实体:
@BsonId
@JsonProperty("_id")
private CompositeId id = new CompositeId();
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class CompositeId {
@BsonProperty("b")
private int b;
@BsonProperty("a")
private String a;
}
(其中 a 实际上是一个 ObjectId 十六进制字符串)
保存实体后,_id 字段按字母顺序保留:
"_id" : {
"a" : "61a480509da3560292eb1ab5",
"b" : 1234
},
稍后,使用pymongo 在其他地方插入相同的逻辑实体:
collection.update_one({'_id': id}, {'$set': ...
查询文档中的id是由pythonOrderedDict构造的,b为第一,a为第二。
所以我最终得到了两个相同的文档集合,仅在 _id 字段顺序上有所不同:
{
"_id" : {
"a" : "61a480509da3560292eb1ab5",
"b" : 1234
},
// rest of identical fields for Java inserted document
}
{
"_id" : {
"b" : 1234,
"a" : "61a480509da3560292eb1ab5"
},
// rest of identical fields for Python upserted document
}
所以,我的问题是,有没有一种方法可以配置 Java 驱动程序以保留文档中字段的顺序(例如 @JsonPropertyOrder)或者不太现实,使用 quarkus/panache 配置?
【问题讨论】:
标签: java mongodb quarkus mongo-java-driver quarkus-panache