需要帮助将此代码转换为新的Mongo Java驱动程序

发布于 2025-02-12 09:52:10 字数 1490 浏览 1 评论 0原文

我正在将旧应用程序从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中编译... < br> 我了解我需要更改:

dbCollection to Mongocollection
dbobject要记录
findone to collection.find()。first()

我需要QueryBuilder对象的帮助,
如何实现“和”或“操作员”

I am converting an old application from mongo driver v1 to the latest version of mongo java driver

currently I am using:

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

The code I am facing issues is:

    @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);
    }

The code will not compile in the new version of mongo-java-driver...
I understand that I need to change:

DBCollection to MongoCollection
DBObject to Document
findOne to collection.find().first()

I need help with the QueryBuilder object ,
how to achieve the "and" "or" operator uysing the new driver

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烂人 2025-02-19 09:52:10

我认为,如果您现在正在升级内容,最好使用Mongotemplate。您可以从import org.springframework.data.data.mongodb.core.query.query.query;使用QUERY来构建查询和criteria导入org.springframework.data.mongodb.core.query.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");

I think it's better to use MongoTemplate if you are upgrading things now. You can use Query from import org.springframework.data.mongodb.core.query.Query; to build query and Criteria from import org.springframework.data.mongodb.core.query.Criteria;.

here is a snippet you can checkout and your code can be something like that (not exactly i guess) :

        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");

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文