簡體   English   中英

需要幫助將此代碼轉換為新的 Mongo Java 驅動程序

[英]need help converting this code to new Mongo Java driver

我正在將舊應用程序從 mongo 驅動程序 v1 轉換為最新版本的 mongo java 驅動程序

目前我正在使用:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>3.4.1</version>
</dependency>

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.12.11</version>
</dependency>

我面臨的問題的代碼是:

    @Override
    public String getSubTypeName(String flowerId, Integer subTypeId) {
        DBCollection collection = mongoTemplate.getCollection("flowers");
        
        QueryBuilder query = new QueryBuilder();
        query.and("configType").is("FLOWER_SUB_TYPE")
             .and("parentConfig").is(flowerId)
             .and("configKey").is(subTypeId)
             .or(
                     QueryBuilder.start("isDeleted").is(false).get(),
                     QueryBuilder.start("isDeleted").exists(false).get()
        );
    
        DBObject flowerName = collection.findOne(query.get());
        if(flowerName ==null || !flowerName.containsField("value"))
            return "empty";
        else return  (String) flowerName.get("value);
    }

該代碼在新版本的mongo-java-driver中將無法編譯...
我明白我需要改變:

DBCollection 到 MongoCollection
DBObject 到文檔
findOne 到 collection.find().first()

我需要有關 QueryBuilder 對象的幫助,
如何使用新驅動實現“與”“或”運算符

我認為如果您現在正在升級東西,最好使用 MongoTemplate。 您可以使用Query from import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Criteria;構建查詢和Criteria .

這是一個您可以簽出的片段,您的代碼可能是這樣的(我猜不完全是):

        Query query = new Query();
        Criteria criteria = Criteria.where("configType").is("configType")
                .and("parentConfig").is(flowerId)
                .and("configKey").is(subTypeId)
                .orOperator(Criteria.where("isDeleted").is(false)
                        .and("isDeleted").exists(false));
        query.addCriteria(criteria);

        BasicDBObject result = mongoTemplate.findOne(query,BasicDBObject.class,"flowers");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM