这种查询是否可行?
我需要在数据库中查询一组指定股票的指定日期的数据。因此,数据需要具有“此”日期,并且是“这些”符号之一。
我有以下代码:
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();
}
这总是出现空的。有人可以解释如何进行这样的查询吗?
答案 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();