如何在MongoDb的Java驱动程序中查询这样的文档?

如何在MongoDb的Java驱动程序中查询这样的文档?,java,mongodb,testing,Java,Mongodb,Testing,我有一份这样的文件 "item" : "060478132", "some_id" : { "5" : { "obj1" : "4", "obj2" : "4" } } 这就是我现在正在做的,我认为它可能会更好,但我是mongo Java驱动程序的新手 DBObject query = start("item").is("060478132").get(); DBObject obj = colle

我有一份这样的文件

"item" : "060478132",
    "some_id" : {
        "5" : {
            "obj1" : "4",
            "obj2" : "4"
        }
    }
这就是我现在正在做的,我认为它可能会更好,但我是mongo Java驱动程序的新手

DBObject query = start("item").is("060478132").get();
DBObject obj = collection.find(query).toArray().get(0);
DBObject some_ids = (DBObject) obj.get("some_id");
DBObject theObj = (DBObject) some_ids.get("5");

MongoDB允许基于字段的投影,因此可以减少结果文档中的字段数。但不能直接查询子单据。我在代码中还看到了查询对象的构造方式。使用一个简单的
新的基本对象(…)

null
检查的完整示例:

DBObject query = new BasicDBObject("item", "060478132");
DBObject document = collection.findOne(query, new BasicDBObject("some_id", 1);
if (document != null) {
    DBObject someId = document.get("some_id");
    if (someId != null) {
        DBObject result = someId.get("5");
    }
}

快速提问为什么在这种情况下BasicDBObject更好?ThxI不知道带“开始”和“是”的第一行。通常,MongoDB中的查询是通过指定JSON查询对象来完成的。使用Java驱动程序,这是一个基本的CDBO对象,它只是驱动程序本身的一个库。是QueryBuilder。它还返回DBObject.OK。我不知道。当然,这样就可以(或者应该)用它来代替!