如何从mongoDB中检索任何元素值?

时间:2012-01-24 09:55:44

标签: mongodb mongodb-java

假设我有以下收集:

{    _id" : ObjectId("4f1d8132595bb0e4830d15cc"), 
    "Data" : "[
            { "id1": "100002997235643", "from": {"name": "Joannah" ,"id": "100002997235643"} , "label" : "test"  } , 
            { "id1": "100002997235644", "from": {"name": "Jon" ,"id": "100002997235644"} , "label" : "test1"  } 
        ]" , 
    "stat" : "true" 
}

如何检索id1,name,id,label或任何其他元素?

我能够获得_id字段,DATA(完整数组),但不能获取DATA中的内部元素。

2 个答案:

答案 0 :(得分:0)

您无法查询嵌入式结构。您始终查询顶级文档。如果要查询数组中的各个元素,则必须将这些元素设置为顶级文档(因此,将它们放在自己的集合中)并在此文档中维护一个_ids数组。

也就是说,除非数组变得非常大,否则只需抓取整个文档并在应用中找到合适的元素几乎总是更有效。

答案 1 :(得分:0)

我认为你不能那样做。它解释为here

如果您想访问特定字段,请关注MongoDB Documentation, 您可以在查询中添加一个标志参数,但是您应该重新设计文档以使其有用:

字段选择

除了查询表达式之外,MongoDB查询还可以使用一些其他参数。例如,可以仅请求返回某些字段。如果我们只想要姓氏为“Smith”的用户的社会安全号码,那么我们可以从shell发出此查询:

// retrieve ssn field for documents where last_name == 'Smith':
db.users.find({last_name: 'Smith'}, {'ssn': 1});

// retrieve all fields *except* the thumbnail field, for all documents:
db.users.find({}, {thumbnail:0});