mongodb-reactive Query by condition using Repository no data,springboot-version-2.7.0

示例: @Repository public interface UsersRepository extends ReactiveMongoRepository {

/**
 * Query user information by user name
 * @param username
 * @return
 */
Mono<Users> findByUsername(String username);

}

Mono usersMono = usersRepository.findByUsername(username);

log: o.s.d.m.r.query.MongoQueryCreator : Created query Query: { "username" : "\"dc2020\""}, Fields: {}, Sort: {}

reasons may be "\"dc2020\"" one more \,cause no data to be found,reuslt==null

I tried the following query and got the solution.

@RequiredArgsConstructor @Service public class UsersServiceImpl implements UsersService {

private final ReactiveMongoTemplate reactiveMongoTemplate;

@Override
public Mono<Users> findByUsername(String username) {
    return reactiveMongoTemplate.findOne(Query.query(new CriteriaDefinition() {
        @Override
        public Document getCriteriaObject() {
            Document document = new Document();
            document.put("username", username);
            return document;
        }

        @Override
        public String getKey() {
            return null;
        }
    }), Users.class);
}

}

log: o.s.d.m.core.ReactiveMongoTemplate : findOne using query: { "username" : "dc2020"} fields: {} in db.collection: dc.user

Comment From: wilkinsona

Unfortunately, I don't speak Chinese. Using Google translate, you appear to be asking about Spring Data MongoDB and how it creates queries. Spring Data MongoDB is managed as a separate project. Please see the Getting Help section of their README to learn how to get help with Spring Data MongoDB.

Comment From: DengChen2020

mongodb-reactive 使用Repository 无数据条件查询,springboot-version-2.7.0

译文: @repository 公共接口 UsersRepository 扩展 ReactiveMongoRepository {

/** * Query user information by user name * @param username * @return */ Mono<Users> findByUsername(String username);

}

Mono usersMono = usersRepository.findByUsername(username);

日志: osdmrquery.MongoQueryCreator : Created query Query: { "username" : "\"dc2020\""}, Fields: {}, Sort: {}

reasons may be "\"dc2020\"" one more \,cause no data to be found,reuslt==null

我尝试了以下查询并得到了解决方案。

@RequiredArgsConstructor @service 公共类 UsersServiceImpl 实现 UsersService {

``` private final ReactiveMongoTemplate reactiveMongoTemplate;

@Override public Mono findByUsername(String username) { return reactiveMongoTemplate.findOne(Query.query(new CriteriaDefinition() { @Override public Document getCriteriaObject() { Document document = new Document(); document.put("username", username); return document; }

    @Override
    public String getKey() {
        return null;
    }
}), Users.class);

} ```

}

日志: osdmcore.ReactiveMongoTemplate : findOne using query: { "username" : "dc2020"} fields: {} in db.collection: dc.user

不幸的是,我不会说中文。使用 Google 翻译,您似乎在询问 Spring Data MongoDB 以及它如何创建查询。Spring Data MongoDB 作为一个单独的项目进行管理。请参阅他们的 README 的获取帮助部分以了解如何获得有关 Spring Data MongoDB 的帮助。

already edited