java – 从mongodb中的嵌套json数组中检索值
我的mongo集合具有以下格式的条目
{ "myobj" : { "objList" : [ { "location" : "Texas" },{ "location" : "Houston"},{ "name":"Sam" } ] },"category" : "cat1" } { "myobj" : { "objList" : [ { "location" : "Tennesy" },{ "location" : "NY"},{ "location" : "SF" } ] },"category" : "cat2" } 我想提取位于“休斯顿”的“**类别**”.在简单的JSON对象的情况下,我必须将其作为查询传递,如: BasicDBObject place = new BasicDBObject(); place.put("location","Houston"); 但是在嵌套JSON的情况下,我不知道如何将其作为查询传递并获得适当的类别.即如果我将我的位置作为“休斯顿”通过,那么它应该返回它的相应类别“cat1”…我希望我的问题现在清楚了…. 解决方法
好的,你有你的文件:
db.coll1.insert({ "myobj" : { "objList" : [ { "location" : "Texas" },"category" : "cat1" }) 和 db.coll1.insert({ "myobj" : { "objList" : [ { "location" : "Tennesy" },{ "location" : "SF" } ] },"category" : "cat1" }) 现在您可以使用dot operator找到您想要的内容: db.coll1.find({“myobj.objList.location”:“Texas”}).pretty()将返回一个具有德克萨斯州的对象 db.coll1.find({“myobj.objList.location”:“SF”}).pretty()将返回一个具有SF的对象 db.coll1.find({“myobj.objList.location”:“Houston”}).pretty()将返回两个对象 现在我希望你能用Java编写它.我从来没有使用过Java,但based on this question你可以做这样的事情.如果它不起作用,只需看看如何在java驱动程序中使用dot运算符为mongo: DBCursor cursor = coll1.find(new BasicDBObject("myobj.objList.location","Texas")); 附:你说,你想要检索类别.以这种方式,您将需要使用投影db.coll1.find({<我提供的查询},{category:1,_id:0}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |