假设我有以下收集:
{ _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中的内部元素。
答案 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});