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

如何从mongoDB中检索任何元素值?,mongodb,mongodb-java,Mongodb,Mongodb Java,假设我有以下收藏: { _id" : ObjectId("4f1d8132595bb0e4830d15cc"), "Data" : "[ { "id1": "100002997235643", "from": {"name": "Joannah" ,"id": "100002997235643"} , "label" : "test" } , { "id1": "100002997235644", "from": {"name"

假设我有以下收藏:

{    _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、名称、id、标签或任何其他元素


我能够获取_id字段、数据完整数组,但无法获取数据中的内部元素。

您无法查询嵌入式结构。您总是查询顶级文档。如果要从数组中查询单个元素,则必须使这些元素成为顶级文档,将它们放在它们自己的集合中,并在此文档中维护一个_id数组


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

我认为你做不到这一点。这是解释

如果要访问特定字段,请执行以下操作:, 您可以向查询中添加一个标志参数,但您应该重新设计文档以使其有用:

字段选择

除了查询表达式之外,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});