0

假设我有以下收藏:

{    _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 中的内部元素。

4

2 回答 2

0

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

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

于 2012-01-24T10:12:49.083 回答
0

我不认为你能做到这一点。它在这里解释。

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

字段选择

除了查询表达式之外,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});
于 2012-01-24T10:16:23.730 回答