如何指定键值对

时间:2015-10-17 12:26:03

标签: mongodb

首先,请允许我说我是新手,所以可能不会问这个问题。这里去了

从java我调用一个函数FindName(int,string)(下面的代码片段),我在DBObject ref语句中得到了JSONParser错误。如果我对值对进行硬编码,代码工作正常,但目标是让调用例程传递不同的值并获得正确的结果。

传递的值是有效的,我甚至打印以验证值。

问题似乎是即使值是有效的int和字符串,mongodb似乎也不允许您指定在键值对中传递给此函数的值的名称。

因此,我猜你需要将日期,传入的名称值转换为键值对可接受的格式。问题是如何做到这一点。

static String FindName(int date,String name)

 MongoClient mongoClient;
      try {
           mongoClient = new MongoClient("xxx.xx.xx.xxx",27017);
      }
      catch (UnknownHostException e)
      {
         e.printStackTrace();
         return name;
      }
      DB db = mongoClient.getDB("tpfdf");
      DBCollection PNR = db.getCollection("PNR");
      DBObject ref = (DBObject) JSON.parse("{PnrByDateFlightCustom: {date:   date), pname: name'}}");

at com.mongodb.util.JSONParser.parse(JSON.java:208)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:241)
        at com.mongodb.util.JSONParser.parse(JSON.java:205)
        at com.mongodb.util.JSONParser.parseObject(JSON.java:241)
        at com.mongodb.util.JSONParser.parse(JSON.java:205)
        at com.mongodb.util.JSONParser.parse(JSON.java:155)
        at com.mongodb.util.JSON.parse(JSON.java:93)
        at com.mongodb.util.JSON.parse(JSON.java:74)
        at MongoDB5.locatePassengerName(MongoDB5.java:38)
        at MongoDB5.main(MongoDB5.java:11)

1 个答案:

答案 0 :(得分:0)

更新。经过多次试验和错误后,我发现如果你动态构建字符串,然后用动态字符串执行ref,它就可以工作。

这很有用。我不知道这是否是正确的编码方式,但是这样的工作原理现在也可以使用它。

  String mdbStr = "{PnrByDateCustom: {date:" + value + "}}";
  System.out.println("mdbStr = " + mdbStr);

  DB db = mongoClient.getDB("tpfdf");
  DBCollection PNR = db.getCollection("PNR");
  DBObject ref = (DBObject) JSON.parse("{}");

// ref =(DBObject)JSON.parse(“{PnrByDateCustom:{date:value}}”);

  ref = (DBObject) JSON.parse(mdbStr);