Hibernate OGM с запросом Mongodb Count с $gt $gte $lt $lte не работает с менее чем 1

Я использую Hibernate OGM (5.2.0.Alpha1) с Mongodb (3.4)

Я выполнил запрос подсчета Mongodb, используя Hibernate OGM, двумя способами ниже.

(1). Запрос подсчета с использованием запроса подсчета Mongodb db.tablename.count({..})

(2). Подсчет запроса по запросу Mongodb Aggregate...

Описание

(1). Запрос подсчета с использованием запроса подсчета Mongodb db.tablename.count({..})

public long executeCountQuery(){

    //below line Works fine because value is 1.3 with $lt
    //String query= "db.sales_stone_details.count({'$and':[{'size' : { '$lt' : 1.3}}]})" 

    //below line gots Error because value is 0.3(less than 1) with $lt
    String query= "db.sales_stone_details.count({'$and':[{'size' : { '$lt' : 0.3}}]})"   

    long count = entityManager.createNativeQuery(query.toString()).getSingleResult();
    return count;
}

(2). Подсчет запроса по запросу Mongodb Aggregate...

public long executeCountQuery(){

    //below line Works fine because value is 1.3 with $lt
    //String query= "db.sales_stone_details.aggregate([{'$match': {'size': {'$lt': 1.3}}},{'$group': {'_id' :  ObjectId(\"59df0d28f16b004af040c38c\"), 'countForAggregate' : {'$sum' : 1}}}])"

    //below line gots Error because value is 0.3(less than 1) with $lt
    String query= "db.sales_stone_details.aggregate([{'$match': {'size': {'$lt': 0.3}}},{'$group': {'_id' :  ObjectId(\"59df0d28f16b004af040c38c\"), 'countForAggregate' : {'$sum' : 1}}}])"

    List<Stone> stones = entityManager.createNativeQuery(query.toString() , Stone.class).getResultList();

    long count = 0;
    if (stones != null || !stones.isEmpty()){
         count  = stones.get(0).getCountForAggregate();
    }

    return count;
}

Ошибка

org.bson.json.JsonParseException: JSON reader was expecting a value but found 'db'.
    at org.bson.json.JsonReader.readBsonType(JsonReader.java:243) ~[mongo-java-driver-3.6.0-beta2.jar:na]
    at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:149) ~[mongo-java-driver-3.6.0-beta2.jar:na]
    at org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:45) ~[mongo-java-driver-3.6.0-beta2.jar:na]
    at org.bson.Document.parse(Document.java:105) ~[mongo-java-driver-3.6.0-beta2.jar:na]
    at org.bson.Document.parse(Document.java:90) ~[mongo-java-driver-3.6.0-beta2.jar:na]
    at org.hibernate.ogm.datastore.mongodb.query.parsing.nativequery.impl.MongoDBQueryDescriptorBuilder.parseAsObject(MongoDBQueryDescriptorBuilder.java:252) ~[hibernate-ogm-mongodb-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.datastore.mongodb.query.parsing.nativequery.impl.MongoDBQueryDescriptorBuilder.parse(MongoDBQueryDescriptorBuilder.java:239) ~[hibernate-ogm-mongodb-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.datastore.mongodb.query.parsing.nativequery.impl.MongoDBQueryDescriptorBuilder.build(MongoDBQueryDescriptorBuilder.java:211) ~[hibernate-ogm-mongodb-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.datastore.mongodb.MongoDBDialect.parseNativeQuery(MongoDBDialect.java:892) ~[hibernate-ogm-mongodb-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.datastore.mongodb.MongoDBDialect.parseNativeQuery(MongoDBDialect.java:169) ~[hibernate-ogm-mongodb-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.dialect.impl.ForwardingGridDialect.parseNativeQuery(ForwardingGridDialect.java:212) ~[hibernate-ogm-core-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.query.impl.NativeNoSqlQueryInterpreter.getCustomQuery(NativeNoSqlQueryInterpreter.java:50) ~[hibernate-ogm-core-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.query.impl.NativeNoSqlQueryInterpreter.createQueryPlan(NativeNoSqlQueryInterpreter.java:45) ~[hibernate-ogm-core-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.engine.query.spi.QueryPlanCache.getNativeSQLQueryPlan(QueryPlanCache.java:210) ~[hibernate-core-5.1.10.Final.jar:5.1.10.Final]
    at org.hibernate.ogm.hibernatecore.impl.OgmSessionImpl.list(OgmSessionImpl.java:301) ~[hibernate-ogm-core-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.ogm.query.impl.NoSQLQueryImpl.list(NoSQLQueryImpl.java:130) ~[hibernate-ogm-core-5.2.0.Alpha1.jar:5.2.0.Alpha1]
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606) ~[hibernate-entitymanager-5.1.10.Final.jar:5.1.10.Final]
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:529) ~[hibernate-entitymanager-5.1.10.Final.jar:5.1.10.Final]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_151]
    at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372) ~[spring-orm-4.3.4.RELEASE.jar:4.3.4.RELEASE]
    at com.sun.proxy.$Proxy7512.getSingleResult(Unknown Source) ~[na:na]
    at com.techhive.sales.service.impl.GenericModelDaoImpl.executeCountQuery(GenericModelDaoImpl.java:621) ~[classes/:na]
...............
...........

У меня такая же ошибка и с операторами $gt , $lte , $gte.

Но похоже, что $gt , $gte , $lt , $lte не работает с менее чем 1 значением..

Я прав???


person vishvas4u    schedule 02.01.2018    source источник


Ответы (1)


ОБНОВЛЕНИЕ 01.11.2018: эта проблема должна быть исправлена ​​в следующем выпуске: 5.2.

Да, ты прав. Вы нашли ошибку. Я создал для него проблему, и она должна быть исправлена ​​в следующем выпуске: https://hibernate.atlassian.net/browse/OGM-1371

person Davide    schedule 10.01.2018
comment
Привет, Дэвид, спасибо за ответ. Также проверьте 0 с другими элементами агрегации запросов MongoDb. Пример: я также проверяю, что 0 не работает с элементами агрегации Mongodb, такими как «$arrayElemAt». Works Fine : db.test.aggregate({$project:{first: {'$arrayElemAt': [['Name'], 1]}}}) Error : db.test.aggregate({$project:{first: {'$arrayElemAt': [['Name'], 0]}}}) - person vishvas4u; 11.01.2018
comment
Мы слили исправление в master, оно должно работать в следующем релизе. Спасибо за ответ - person Davide; 11.01.2018
comment
хорошо, спасибо Давиде.. Можете ли вы сказать мне приблизительные дни для следующего релиза?? На самом деле мой проект запущен, и я должен реализовать в нем эти запросы диапазона 0-1... - person vishvas4u; 11.01.2018
comment
Я не знаю на самом деле, мне нужно закончить вопросы в выпуске 5.2.CR1: hibernate.atlassian.net/projects/OGM/versions/31605/tab/ - person Davide; 11.01.2018
comment
Привет Давиде, Я думаю, может быть еще 2 выпуска .... Пожалуйста, прочитайте ниже 2 ссылки. 1. stackoverflow.com/questions/48319793/ 2. stackoverflow.com/questions/48294248/ - person vishvas4u; 18.01.2018
comment
Спасибо, посмотрю - person Davide; 18.01.2018