【问题标题】:Parse Mongodb json query in java with multiple criteria使用多个条件在 java 中解析 Mongodb json 查询
【发布时间】:2018-06-08 14:42:32
【问题描述】:

我想将 java 字符串解析为 mongo DBObject 或 BasicDBObject,如下所示。

List<DBObject> query = new ArrayList<DBObject>();

String allQry = "{ \"$match\" : { \"CUSTOMERID\" : { \"$gt\" : 10}}}, { \"$project\" : { \"CUSTOMERNAME\" : 1 , \"COUNTRY\" : 1 , \"CUSTOMERID\" : 1}},{ \"$sort\" : { \"COUNTRY\" : 1}}";

BasicDBObject dbobj = BasicDBObject.parse(allQry);

query.add(dbobj);

System.out.println("qqqquery : "+query);

Cursor aggCur = collection.aggregate(query, aggOpt);

运行上面的示例代码后,它会输出qqqquery : [{ "$match" : { "CUSTOMERID" : { "$gt" : 10}}}]。 allQry 中有 $match、$project 和 $sort。为什么不在此查询中包含$project$sort?它只包括$match,谁能帮忙检查一下这个原因?谢谢。

【问题讨论】:

  • 请正确格式化
  • 无法理解您的问题。请对其进行编辑以使其更具可读性。
  • 你在中间结束对象。将所有},{ 替换为,。投票结束是错字。
  • 感谢您帮助编辑示例代码。我将所有 },{ 替换为 ,它会抛出异常 com.mongodb.MongoCommandException: Command failed with error 16435: 'A pipeline stage specification object must contain just one field.'
  • 错误16435在这里有答案:stackoverflow.com/questions/39060221/…

标签: java mongodb


【解决方案1】:

按照本教程: http://pingax.com/trick-convert-mongo-shell-query-equivalent-java-objects/

您可以像这样添加查询的所有部分:

MongoClient mongo = new MongoClient();
DB db = mongo.getDB("pingax");

DBCollection coll = db.getCollection("aggregationExample");

/*
 MONGO SHELL : db.aggregationExample.aggregate(
 {$match : {type : "local"}} ,
 {$project : { department : 1 , amount : 1 }}
 );
 */
 DBObject match = new BasicDBObject("$match", new BasicDBObject("type", "local")); 

 DBObject project = new BasicDBObject("$project", new BasicDBObject("department", 1).append("amount", 1));

 AggregationOutput output = coll.aggregate(match,project,group,sort);

相关:

【讨论】:

  • 感谢您的回答。但是,这个例子不能解决我的问题。我需要将 java String 中的所有部分转换为 mongo DBObject。
猜你喜欢
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2019-05-24
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
相关资源
最近更新 更多