private TurmsFindOperation<T> getFindOperation(QueryOptions options) {
        MongoNamespace namespace = getNamespace();
        CodecRegistry codecRegistry = getCodecRegistry();
        Class<T> documentClass = getDocumentClass();
        Codec<T> codec = codecRegistry.get(documentClass);
        BsonDocument filterDoc = filter.toBsonDocument(documentClass, codecRegistry);
        BsonDocument command = options.asDocument(namespace.getCollectionName(), filterDoc);
        return new TurmsFindOperation<>(namespace, codec, command).retryReads(getRetryReads());
    }
@author James Chen
@implNote The heavy objects that we have eliminated: 1. {@link FindOptions} and
          {@link FindOperation} 3. A lot of intermediate operations 4. A lot of intermediate
          objects (especially documents)
@see FindPublisherImpl
turms-server-common/src/main/java/com/mongodb/reactivestreams/client/internal/TurmsFindPublisherImpl.java