带有$和Query的MongoDB $ in

时间:2013-07-09 19:12:17

标签: java mongodb

这种查询是否可行?

我需要在数据库中查询一组指定股票的指定日期的数据。因此,数据需要具有“此”日期,并且是“这些”符号之一。

我有以下代码:

public void findDateStockSet(String date, ArrayList<String> symbolSet) throws UnknownHostException {
    this.stocks = this.getCollectionFromDB();
    BasicDBObject objectToFind = new BasicDBObject();
    List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
    obj.add(new BasicDBObject("date", date));
    obj.add(new BasicDBObject("symbol", new BasicDBObject("$in", symbolSet)));
    objectToFind.put("$and", obj);


    DBCursor cursor = this.stocks.find(objectToFind);

    System.out.println("Finding Stocks");
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }
    System.out.println();
}

这总是出现空的。有人可以解释如何进行这样的查询吗?

1 个答案:

答案 0 :(得分:1)

您不需要使用$和运算符,只需将查询构建为下面的json:

{ "date" : "20100223", "symbol" : { $in : [ "appl", "goog" ] } }

我喜欢使用BasicDBObjectBuilder util类来构建DBObjects。所以你的查询将是:

DBObject query = BasicDBObjectBuilder.start()
    .add("date", date)
    .push("symbol")
        .add("$in", symbolSet)
    .get();