首页 > 解决方案 > $and 条件不适用于 springboot mongodb 中的三个或三个以上字段

问题描述

@Document(collection = "formtype")
public class FormType {
    @Id
    @Field(value = "id")
    private Long formTypeId;  

    @Field(value = "formtypename")
    private String formTypeName;

@Field(value = "isdeleted")
private Boolean isDeleted = false;

 //with constructor and getter setter
}

我写了这个查询来找出formTypeName不属于那个的表单类型的记录,formTypeIdisDeleted不等于真。

编写此查询时,即使该记录存在,我也会将值设为 null。请帮帮我!

 @Query("{ '$and': [ {'formTypeId':{$ne :?0}} , {formTypeName:'?0'} , {'isDeleted':{$ne : true}} ] }") FormType getformTypeToUpdate(Long formTypeId,String formTypeName);

标签: javamongodbspring-boot

解决方案


您已?0包含在简单的引用中,编译器可能会误解。此外,您似乎只将Long formTypeId参数用于两个条件formTypeIdformTypeName.

你能试一下吗:

@Query("{ '$and': [ { 'formTypeId': { $ne : ?0 } }, { 'formTypeName': ?1 }, { 'isDeleted': { $ne : true } } ] }") 
FormType getformTypeToUpdate(Long formTypeId, String formTypeName);

推荐阅读