我有以下数据:
{
"_id" : ObjectId("569a5328c5905e1b08113987"),
"dataId" : "003f2d9c0b9b0f047df458b78a12404a",
"dataSensors" : [
{
"IoTserial" : "7ee042ad9d01e3e53c1b05d8923ce2ec",
"dateMesure" : "2016-01-16 15:51:41",
"value" : "0.47"
},
{
"IoTserial" : "aaa042ad9d0aaaaaa1b05d8923ce2aa",
"dateMesure" : "2016-01-16 15:51:40",
"value" : "15.66"
},
{
"IoTserial" : "7ee042ad9d01e3e53c1b05d8923ce2ec",
"dateMesure" : "2016-01-16 15:51:40",
"value" : "15.66"
},
{
"IoTserial" : "7ee042ad9d01e3e53c1b05d8923ce2ec",
"dateMesure" : "2016-01-16 15:51:42",
"value" : "10.15"
}
],
"statusFlag" : "POI"}
当我使用
时db.collection.find({dataId:"003f2d9c0b9b0f047df458b78a12404a"},{dataSensors:{$elemMatch:{IoTserial:"7ee042ad9d01e3e53c1b05d8923ce2ec"}}})
它返回系列的第一个成员
{
"_id" : ObjectId("569a5328c5905e1b08113987"),
"dataSensors" : [
{
"IoTserial" : "7ee042ad9d01e3e53c1b05d8923ce2ec",
"dateMesure" : "2016-01-16 15:51:41",
"value" : "0.47"
}
]}
但我需要最后一个元素" value" :" 10.15"
提前致谢
答案 0 :(得分:2)
您未正确使用find
。
find
的第二个参数不是query
,而是projection
。
将find
与query
中的single query condition
和projection
中的$slice: -1
一起使用,以获取数组的最后一个元素:
db.collection.find({
dataId:"003f2d9c0b9b0f047df458b78a12404a",
"dataSensors.IoTserial":"7ee042ad9d01e3e53c1b05d8923ce2ec"
},
{
dataSensors:{
$slice: -1
}
});