如何将数组传递给MongoRepository @Query?

时间:2017-06-14 14:53:17

标签: mongodb spring-data

使用Spring Data MongoDB。我在MongoRepository上定义了这个查询:

@Query("{'type':?0, 'tags.type':?1, 'tags.softSkill.name': {$all: ?2}}")
List<Foo> findByTypeAndTags_TypeAndTags_SoftSkills(
        FooType type, TagType tagType, String[] softSkills);

由于我想使用$all运算符,我无法通过方法命名方式构建查询,因此我使用@Query注释。

问题在于它不同于我尝试为String[]参数传递的?2。我已尝试使用List但错误仍然存​​在。

value expected to be of type java.util.List but is class java.lang.String toString:fooStr

在mongo-shell上就像:$all: ['foo1','foo2']

Foo 抽象实体就像:

@Data
@Document(collection="foes")
public abstract class Foo {
    /*...*/ 
    protected List<Tag> tags = new ArrayList<>();
}

标记 asbtract pojo:

@Data
public abstract class Tag {

    protected final TagType type;
    protected TagLevel level;

}

TagSoftSkill pojo:

@Data
@EqualsAndHashCode(callSuper=true)
public class TagSoftSkill extends Tag{

    private SoftSkill softSkill;  //another pojo that has a "name" field


    public TagSoftSkill() {
        super(TagType.SOFT_SKILL);
    }


}

我已经调试过,softSkills打印[foo]。我将值修改为['foo'],但没有任何更改。

1 个答案:

答案 0 :(得分:0)

我没有提到我正在使用fongo。切换到真正的mongo,一切正常。所以这是一个fongo问题。