Mongodb 如何将数组传递给MongoRepository@Query?
使用Spring数据MongoDB。我已经在我的MongoRepository上定义了这个查询:Mongodb 如何将数组传递给MongoRepository@Query?,mongodb,spring-data,Mongodb,Spring Data,使用Spring数据MongoDB。我已经在我的MongoRepository上定义了这个查询: @Query("{'type':?0, 'tags.type':?1, 'tags.softSkill.name': {$all: ?2}}") List<Foo> findByTypeAndTags_TypeAndTags_SoftSkills( FooType type, TagType tagType, String[] softSkills); 在mongo s
@Query("{'type':?0, 'tags.type':?1, 'tags.softSkill.name': {$all: ?2}}")
List<Foo> findByTypeAndTags_TypeAndTags_SoftSkills(
FooType type, TagType tagType, String[] softSkills);
在mongo shell上,类似于:$all:['foo1','foo2']
Foo抽象实体类似于:
@Data
@Document(collection="foes")
public abstract class Foo {
/*...*/
protected List<Tag> tags = new ArrayList<>();
}
TagSoftSkillpojo:
@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);
}
}
我已经调试并打印了
[foo]
。我将该值修改为类似于['foo']
,但没有任何更改 我没有提到我正在使用。切换到真正的mongo,一切正常。所以这是fongo的问题。我没有提到我正在使用。切换到真正的mongo,一切正常。所以这是fongo的问题。你能给我们展示一下输入argsoftSkills
失败的示例调用方法吗?请将你的Foo
bean也添加到帖子中?@Veeram好的,doneI不能重新创建错误。列表和数组在1.10.4 spring mongo版本中的设置对我都适用。你能为异常添加stacktrace吗?@Veeram这样做@Query
和{$all:?2}
并传递字符串[]
应该是合法的吗?好的,我将继续调试。你能给我们展示一下输入argsoftSkills
失败的示例调用方法吗?请将你的Foo
bean也添加到帖子中?@Veeram好的,doneI不能重新创建错误。列表和数组在1.10.4 spring mongo版本中的设置对我都适用。你能为异常添加stacktrace吗?@Veeram这样做@Query
和{$all:?2}
并传递字符串[]
应该是合法的吗?好的,我将继续调试。
@Data
public abstract class Tag {
protected final TagType type;
protected TagLevel level;
}
@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);
}
}