[英]retrieve values from nested json array in mongodb
我的mongo集合具有以下格式的條目
{
"myobj" : {
"objList" : [
{ "location" : "Texas" },
{ "location" : "Houston"},
{ "name":"Sam" }
]
},
"category" : "cat1"
}
{
"myobj" :
{
"objList" : [
{ "location" : "Tennesy" },
{ "location" : "NY"},
{ "location" : "SF" }
]
},
"category" : "cat2"
}
我想提取"**category**"
這里location
是"Houston"
。 在簡單的JSON對象的情況下,我必須將其作為查詢傳遞,如:
BasicDBObject place = new BasicDBObject();
place.put("location", "Houston");
但是在嵌套JSON的情況下,我不知道如何將其作為查詢傳遞並獲得適當的類別 。 即如果我將我的位置作為“休斯頓”通過,那么它應該返回它的相應類別“cat1”...我希望我的問題現在清楚了....
好的,你有你的文件:
db.coll1.insert({
"myobj" : {
"objList" : [
{ "location" : "Texas" },
{ "location" : "Houston"},
{ "name":"Sam" }
]
},
"category" : "cat1"
})
和
db.coll1.insert({
"myobj" : {
"objList" : [
{ "location" : "Tennesy" },
{ "location" : "Houston"},
{ "location" : "SF" }
]
},
"category" : "cat1"
})
現在,您可以使用點運算符找到所需內容:
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,但基於這個問題你可以做類似的事情。 如果它不起作用,只需看看如何在java驅動程序中使用dot運算符為mongo:
DBCursor cursor = coll1.find(new BasicDBObject("myobj.objList.location", "Texas"));
你告訴PS ,你想要檢索類別。 以這種方式,您將需要使用投影db.coll1.find({<the query I provided}, {category: 1, _id: 0})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.