我有一个这样的文档..
{
"_id" : ObjectId("59b0ea9b3a91af574a3e0464"),
"machineID" : "b83c",
"sensorState" : [
{
"data" : "377",
"sensor" : "solar",
"time" : ISODate("2017-09-20T19:42:58.766Z")
},
{
"data" : "35",
"sensor" : "photosynthetic",
"time" : ISODate("2017-09-20T19:42:58.782Z")
},
{
"data" : "370",
"sensor" : "solar",
"time" : ISODate("2017-09-20T19:43:29.089Z")
},
{
"data" : "400",
"sensor" : "solar",
"time" : ISODate("2017-09-20T19:44:29.089Z")
},
{
"data" : "35",
"sensor" : "photosynthetic",
"time" : ISODate("2017-09-20T19:43:29.110Z")
}
]
}
我只想检索 sensorState
数组中与 sensor=solar
匹配的子文档。所以,我尝试这样做:
db.getCollection('sensorDB').find({ },
{ "sensorState" : { $elemMatch: {data : "35" } } })
但它只显示一个结果:
{
"_id" : ObjectId("59b0ea9b3a91af574a3e0464"),
"sensorState" : [
{
"data" : "35",
"sensor" : "photosynthetic",
"time" : ISODate("2017-09-20T19:42:58.782Z")
}
]
}
但是,我想在 sensorState
数组中查找与 sensor=solar
匹配的所有子文档。看起来 $elemMatch
只能选择一个结果。
最佳答案
我自己找到了答案。使用聚合 答案是这样的
db.getCollection('sensorDB').aggregate(
{$match: {machineID:"b83c"}},
{$unwind:"$sensorState"},
{$match: {"sensorState.sensor":"solar"}}
)
关于mongodb - 投影嵌套数组中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544057/