Java MongoDB$in与$and查询

Java MongoDB$in与$and查询,java,mongodb,Java,Mongodb,这种类型的查询可能吗 我需要在数据库中查询一组指定股票的指定日期的数据。所以数据需要有“this”日期,并且是“this”符号之一 我有以下代码: public void findDateStockSet(String date, ArrayList<String> symbolSet) throws UnknownHostException { this.stocks = this.getCollectionFromDB(); BasicDBObject objec

这种类型的查询可能吗

我需要在数据库中查询一组指定股票的指定日期的数据。所以数据需要有“this”日期,并且是“this”符号之一

我有以下代码:

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();
}
public void findDateStockSet(字符串日期、ArrayList符号集)引发UnknownHostException{
this.stocks=this.getCollectionFromDB();
BasicDBObject objectToFind=新的BasicDBObject();
List obj=new ArrayList();
添加(新的基本对象(“日期”,日期));
对象添加(新基本对象(“符号”,新基本对象(“$in”,符号集));
objectToFind.put(“$and”,obj);
DBCursor=this.stocks.find(objectToFind);
System.out.println(“查找库存”);
while(cursor.hasNext()){
System.out.println(cursor.next());
}
System.out.println();
}

这个总是空的。有人能解释一下如何进行这样的查询吗?

您不需要使用$and运算符,只需按照下面的json构建查询:

{ "date" : "20100223", "symbol" : { $in : [ "appl", "goog" ] } }
我喜欢使用
basicdbobobjectbuilder
util类来构建DBObjects。因此,您的查询将是:

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

你能举一个你的文档的例子吗?{u id:{“$oid:“51dc5fc203646b5aa5ffaed2”},“日期”:“20100223”,“符号”:“aapl”,“打开”:“199.91”,“高”:“201.33”,“低”:“195.71”,“关闭”:“197.059”,“卷”:“205468”}我只是想我应该承认我在搜索查询中输入了一个错误的日期。这就是我得到空值的原因。上面的代码和下面米格尔的答案一样有效。谢谢米格尔!这是一种创建查询的简单方法,它工作得非常好!