Mongo 按条件查找存储库无效

Mongo Repository find by condition is not working

我有一个 MongoRepository 查询方法,需要根据条件获取数据。

我在数据库中有以下记录。

{
'name' : 'test',
'show' : false,
'free' : true
}

和下面的查询,但是查询没有return这条记录。

repositiry.findByNameNotNullAndShowIsTrueOrFreeIsTrue()

根据条件,Namenot nullFreeTrue。但是为什么我没有得到记录。

我重现了你的场景。它在这里工作。记录的查询是正确的。

{
    "$or": [
        {
            "name": {
                "$ne": null
            },
            "show": true
        },
        {
            "free": true
        }
    ]
}

要启用 mongodb 查询日志,您必须调试 MongoTemplate。

logging.level.org.springframework.data.mongodb.core.MongoTemplate = DEBUG

实体

@Document
@Data
@Builder
class Entity {
    private String id;
    private String name;
    private boolean show;
    private boolean free;
}

存储库

interface EntityRepository extends MongoRepository<Entity,String> {

    List<Entity> findByNameIsNotNullAndShowIsTrueOrFreeIsTrue();
}

测试

@Test
    public void testQuery() {
        repository.deleteAll();

        Entity entity = Entity.builder()
                .free(true)
                .show(false)
                .name("test")
                .build();
        repository.save(entity);

        List<Entity> entities = repository.findByNameIsNotNullAndShowIsTrueOrFreeIsTrue();

        Assert.assertEquals(1, entities.size());
    }