【问题标题】:Mongodb query constructor to take raw query string JavaMongodb查询构造函数采用原始查询字符串Java
【发布时间】:2014-08-28 18:50:22
【问题描述】:

我正在尝试提出一个概念来获取查询字符串并通过查询对象将其传递给这样的东西:

returnList = mongoTemplateTracking.find(query,TrackingData.class, COLLECTION_NAME);

我一直在查看 Query 和 Criteria 类的构造函数,看看它们是否可以采用原始字符串,例如:

 "ID" : "32399a"

而不是通过 Criteria.where().is() 等来构建 Criteria 对象。

方法我看过

protected <T> List<T> doFind(String collectionName,
                 com.mongodb.DBObject query,
                 com.mongodb.DBObject fields,
                 Class<T> entityClass)

但是,当我将 mongoTemplateTracking 自动装配到我的班级中时,我无法访问此方法。

【问题讨论】:

    标签: spring mongodb-java


    【解决方案1】:

    JSON.parse(json) 已弃用。使用此代码:

    String s = "{\"$or\": [ {\"name\": \"buzz\"}, {\"age\": {\"$lt\": 20 }} ] }";
    Bson bson =  BasicDBObject.parse( json );
    collection.find(bson);
    

    【讨论】:

      【解决方案2】:

      MongoDB 查询语言(“MQL”)很容易以 JSON 形式表示。因此,如果您有一个字符串表达式,例如:

      String s = "{\"$or\": [ {\"name\": \"buzz\"}, {\"age\": {\"$lt\": 20 }} ] }";
      

      然后你可以用这个工具轻松解析它:

      import com.mongodb.util.JSON;
      DBObject query = (DBObject) JSON.parse(s);
      yourCollection.find(query);
      

      看看In Java, is there a way to write a string literal without having to escape quotes?,让长查询表达式中引号的转义更容易一些。

      【讨论】:

        猜你喜欢
        • 2021-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-21
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        相关资源
        最近更新 更多