加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从mongodb中的嵌套json数组中检索值

发布时间:2020-12-15 04:26:32 所属栏目:Java 来源:网络整理
导读:我的mongo集合具有以下格式的条目 { "myobj" : { "objList" : [ { "location" : "Texas" },{ "location" : "Houston"},{ "name":"Sam" } ] },"category" : "cat1"}{"myobj" : { "objList" : [ { "location" : "Tennesy" },{ "location" : "NY"},{ "location"
我的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})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读