在mognodb中, 如果数据结果类似如下:
{
"_id" : ObjectId("67c898c2561e44e13a580f79"),
"_class" : "com",
"vin" : "123",
"msg" : [
{
"data" : {
"limit" : "1",
"fim" : "e_GLOB1"
},
"name" : "name1"
},
{
"data" : {
"limit" : "2",
"fim" : "e_GLOB2"
},
"name" : "name2"
}
],
"timestamp" : NumberLong(1470709430)
}
如果只想返回msg数组中name=name1的元素,即从内嵌数据对象中获取指定元素,可以通过aggregate查询以及$filter操作符实现.
db.collectionname.aggregate({$match: {"msg.name": "name1"}}, {$project: {_id: 0, timestamp: "$timestamp", msg: {$filter: {input: "$msg", as: "msg", cond: {$eq: ["$$msg.name", "name1"]}}}}})