使用objectID对嵌套对象进行的MongoDB java驱动程序查询不起作用
我有以下mongodb文档结构使用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",
{
"_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字段相匹配