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: bclozel

Duplicates #31200 Please avoid creating duplicate issues, your first issue already has been answered.