簡體   English   中英

從mongodb中的嵌套json數組中檢索值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM