【问题标题】:Import data com.mongodb.util.JSONParseException导入数据 com.mongodb.util.JSONParseException
【发布时间】:2016-07-25 12:56:22
【问题描述】:

当我尝试时:

BasicQuery b = new BasicQuery("{db.processoDomain.find({})}");

或者:

 <document name="import">
  <entity processor="MongoEntityProcessor"
    query="{db.processoDomain.find({})}"
             collection="processoDomain"   
             datasource="bradescorobotjrsethemis"
             transformer="MongoMapperTransformer" name="processoDomain">

我在 solr 中遇到了以下异常:

Caused by: com.mongodb.util.JSONParseException: 
{db.processoDomain.find({})}
                               ^
    at com.mongodb.util.JSONParser.read(JSON.java:301)
    at com.mongodb.util.JSONParser.parseObject(JSON.java:262)
    at com.mongodb.util.JSONParser.parse(JSON.java:227)
    at com.mongodb.util.JSONParser.parse(JSON.java:155)
    at com.mongodb.util.JSON.parse(JSON.java:92)
    at com.mongodb.util.JSON.parse(JSON.java:73)

有人知道如何解决吗?

谢谢

【问题讨论】:

    标签: java mongodb solr database


    【解决方案1】:

    好吧,{db.processoDomain.find({})} 似乎是错误的。试试这个:

    BasicQuery b = new BasicQuery("{}");
    

    或者如果查询包含参数,像这样:

    BasicQuery b = new BasicQuery("{ name : 'lukas' }");
    

    然后你可以这样运行它:

        MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient("127.0.0.1"), "db_name");
    
        MongoOperations mongoOperation = (MongoOperations) mongoTemplate;
    
        YourDataClass result = mongoOperation.find(b, YourDataClass.class);
    

    更多信息可以在Here找到

    【讨论】:

    • 感谢@TTCC,这行得通。但我想使用更复杂的 mongo 查询,例如: db.processoDomain.aggregate([{ $project: { 'status': 1, 'instancia': 1, 'ano': 1, 'numeroProcesso': 1, 'partes ': '$informacoesAdicionais.PARTES' } }])
    • 是的,如果您熟悉核心 MongoDB 控制台 find() 命令,只需将“原始”查询放入 new BasicQuery("{ xxxxxx }")。
    • nice..你有一些简单的例子吗?
    • 我无法将聚合函数放入 Solr data-config.xml 中的查询中
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2021-04-19
    • 2017-09-20
    • 2012-04-02
    相关资源
    最近更新 更多