使用objectID对嵌套对象进行的MongoDB java驱动程序查询不起作用

使用objectID对嵌套对象进行的MongoDB java驱动程序查询不起作用,java,mongodb,search,nested-attributes,Java,Mongodb,Search,Nested Attributes,我有以下mongodb文档结构 { "_id": ObjectId("571530da41995a703faaf55b"), "project_name": "abc", "status": "new", "cluster": "", "sku": { "_id": "57152f7941995a703faaf559", "name": "temp", "distribution": "apache",

我有以下mongodb文档结构

{
    "_id": ObjectId("571530da41995a703faaf55b"),
    "project_name": "abc",
    "status": "new",
    "cluster": "",
    "sku": {
        "_id": "57152f7941995a703faaf559",
        "name": "temp",
        "distribution": "apache",
        "creation_date": "2016-04-18T19:02:46.595Z",
        "user_id": "570784b1682d25f45b64ed51",
        "__v": 0,
        "services": []
    }
}
我想查找给定sku.\u id的项目信息。为此,我使用以下代码

String  getProjectIDforSku(String skuID ) {
        ObjectId id = new ObjectId(skuID);
        BasicDBObject query = new BasicDBObject("sku", new BasicDBObject("_id", skuID));
        DBObject obj = getCollection("deployment", "projects").findOne(query);
        if (obj != null) {
            var jsonString = Json.parse(obj.toString());
            return jsonString;
        } else
            return null;
    }
调用此函数时,接收的是null而不是有效的json字符串。 谁能告诉我哪里错了? 谢谢你的改变
BasicDBObject query=newbasicdbobject(“sku”,newbasicdbobject(“u id”,skuID))
BasicDBObject query=新的BasicDBObject(“sku.\u id”,skuID)

原因是,在第一个字段中,您将sku与仅具有一个字段_id的对象进行比较(事实并非如此,该对象具有其他字段),而第二个字段仅与sku对象中的_id字段相匹配