是否可以从 Spring Boot MongoTemplate 文档中的数组中提取字符串数组?

Posted

技术标签:

【中文标题】是否可以从 Spring Boot MongoTemplate 文档中的数组中提取字符串数组?【英文标题】:Is it possible to pull an array of strings from an Array whithin the document in Spring Boots MongoTemplate? 【发布时间】:2022-01-22 22:34:19 【问题描述】:

我有一个字符串数组:

List<String> namesArray = new ArrayList<>()

然后我的 MongoDB 中有以下两个文档:


    "_id": 
        "$oid": "9873hihy9032u49083b98"
    ,
    "type": "A",
    "config": 
        "names": ["Marc", "Franc"],
    



    "_id": 
        "$oid": "803bkjiug34909832u40"
    ,
    "type": "A",
    "config": 
        "names": ["Max", "Brian", "Marc"],
    

我想从每个文档的config.names 数组中删除出现在namesArray 中的所有名称。

例如,如果名称 Marc 包含在数组中,则应将其从两个文档中删除,等等。

我试过这个没有任何运气:

Query query = Query.query(Criteria.where("type").is("A").and("config.names").in(namesArray));
Update update = new Update().pull("config.names", query)
mongo.updateMulti(new Query(), update, Person.class);

【问题讨论】:

【参考方案1】:

你需要使用$elemMatch

见:

mongodb documentation

spring data documentation

【讨论】:

我实际上看过$elemMatch,但我无法将它包含在查询中。无论我把它放在哪里,它都会给我一个错误。

以上是关于是否可以从 Spring Boot MongoTemplate 文档中的数组中提取字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 Spring Boot MongoTemplate 文档中的数组中提取字符串数组?

从 json 文件加载 spring-boot 属性

Spring Boot启动流程

Spring Boot - 从 Application.properties 填充列表/集合?

Spring Boot 默认指标从哪来?

Spring Boot 默认的指标数据从哪来的?