java - 如何在 Java 中使用子节点查询 MongoDB

标签 java mongodb child-nodes

我正在尝试使用java查询mongodb。我的 Collection 的名字是:读书。以下是我正在查询的特定文档的示例:

{
"_id" : {
    "d" : "B66929932",
    "r" : "15500304",
    "eT" : ISODate("2014-09-29T12:03:00Z")
},
"v" : 169000,
"iT" : ISODate("2015-04-10T20:42:07.577Z")

}

我正在尝试查询 r = 15500304、eT = 2014-09-29T12:03:00Z 和 v = 169000 的位置。我可以在 mongo 中轻松执行此操作:

db.reads.find({ "_id.r" : "15500304", "_id.eT" : ISODate("2014-09-29T12:03:00Z"), "$where" : "this.v == 169000;"}).pretty()

我无法弄清楚如何在 java 中构建它。到目前为止我已经得到:

DBCollection collection = db.getCollection("reads");
BasicDBObject andQuery = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();

obj.add(new BasicDBObject("_id.r", "15500304"));
obj.add(new BasicDBObject("_id.eT", "2014-09-29T12:03:00Z"));
obj.add(new BasicDBObject("v", 169000));
andQuery.put("$and", obj);

DBCursor cursor = collection.find(andQuery);
    while(cursor.hasNext()){
        System.out.println(cursor.next());
    }

我的问题是:如何使用这些子节点进行查询并返回匹配的文档?

我无法在网上找到任何明确的建议/示例。非常感谢任何和所有建议。

最佳答案

你很接近。将您的查询修改为:

DBCollection collection = db.getCollection("reads");
BasicDBObject query = new BasicDBObject();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
String dateInString = "2014-09-29T12:03:00Z";
Date date = df.parse(dateInString);

query.append("status.name", "Expired")
     .append("_id.eT", date)
     .append("v", 169000);

或使用 QueryBuilder :

DBObject query = QueryBuilder.start()
                         .put("_id.r").is("15500304")
                         .put("_id.eT").is(date)
                         .put("v").is(169000)
                         .get();

DBCursor cursor = collection.find(query);
while(cursor.hasNext()){
    System.out.println(cursor.next());
}

关于java - 如何在 Java 中使用子节点查询 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29635051/

相关文章:

javascript xml 循环childNodes

javascript - 防止 Javascript ChildNodes 解析 < 和 >

java - XMLUnit - NodeFilter 不返回任何内容

mongodb - 通过 MongoDB 中的 collection.update 将所有数组值更新为Upper

mongodb - 什么NoSQL数据库对复杂的多对多关系有好处?

javascript - 我无法停止异步

javascript - js循环遍历被点击的元素子节点

java - 使用 JFreeChart 绘制随时间变化的数据图

java - 如何使用java从日期中获取小时数

Java用箭头键在gui中移动一个圆圈