我正试图对两个集合进行聚合,但我没有得到它,我还想用一个push对所有的集合进行分组。
这是我的传感器系列:
{
    "_id": ObjectId ("5b3e3ce0f0ed5174a3097cde"),
    "name": "co2_int",
    "type": "climate",
    "place": "interior",
    "user": ObjectId ("5b10176084195a07f63c942a"),
    "greenhouse": ObjectId ("5b1027896933440c030f8a6b"),
    "__v": 0
}
数据报主机集合:
{
    "_id": ObjectId ("5b3e40d6f0ed5174a3097f4e"),
    "name": "co2_ext",
    "timestamp": ISODate ("2018-08-30T16: 25: 13.159Z"),
    "value": "200",
    "greenhouse": ObjectId ("5b1027896933440c030f8a6b"),
    "sensor": ObjectId ("5b1027dc6933440c030f8a6e"),
    "__v": 0
}
这是我的总结:
Datagreenhouse.aggregate ([
    {"$ match": {
    "name": {$ in: arr}}},
    {
      "$ lookup": {
          "from": "sensor",
          "localField": "_id",
          "foreignField": "_id.sensor",
          "as": "sensor_type"
      }
    },
    {"$ group": {
        "_id": {
            "timestamp": "$ timestamp",
            "name": "$ name",
            "value": "$ value",
            "sensor_type": "$ sensor_type"
        },
        "Count": {"$ sum": 1}
    }},
    // {$ unwind: '$ type'},
    {"$ group": {
        "_id": "$ _id.timestamp",
        "measurements": {
            "$ push": {
                "name": "$ _id.name",
                "count": "$ Count",
                "value": "$ _id.value",
                "sensor_type": "$ _id"
            },
        },
        "count": {"$ sum": "$ Count"}
    }},
    {"$ sort": {"_id": -1}},
    {"$ limit": 1}
    ]
我需要恢复与该数据相关联的传感器采集位置。
回答:
{
            "_id": "2018-08-30T16: 25: 13.159Z",
            "measurements": [
                {
                    "name": "temperature_int",
                    "count": 1,
                    "value": "33",
                    "sensor_type": {
                        "timestamp": "2018-08-30T16: 25: 13.159Z",
                        "name": "temperature_int",
                        "value": "33",
                        "sensor_type": []
                    }
                },
                {
                    "name": "co2_int",
                    "count": 1,
                    "value": "70",
                    "sensor_type": {
                        "timestamp": "2018-08-30T16: 25: 13.159Z",
                        "name": "co2_int",
                        "value": "70",
                        "sensor_type": []
                    }
                },
                {
                    "name": "temperatura_ext",
                    "count": 1,
                    "value": "90",
                    "sensor_type": {
                        "timestamp": "2018-08-30T16: 25: 13.159Z",
                        "name": "temperatura_ext",
                        "value": "90",
                        "sensor_type": []
                    }
                }
            ],
            "count": 3
        }
我不知道如何解决这个问题。
致以问候和感谢。
*****编辑*****
我编辑的文章工作不正常,它总是显示相同的值的地方
{
"DatagreenhouseRecuperado": [
{
"_id": "2018-08-30T16:25:13.159Z",
"medidas": [
{
"name": "co2_ext",
"count": 1,
"value": "200",
"place": "interior"
},
{
"name": "co2_int",
"count": 1,
"value": "70",
"place": "interior"
},
{
"name": "temperatura_ext",
"count": 1,
"value": "90",
"place": "interior"
},
{
"name": "temperatura_int",
"count": 1,
"value": "45",
"place": "interior"
}
],
"count": 4
}
]
}
如果名称为“ext”,则必须将“exterior”而不是“interior”置于“collection sensor”中字段值所在的位置。
Aggregarion公司:
Datagreenhouse.aggregate([
{"$match": {
"name" : { $in: arr }} },
{
"$lookup": {
"from": "sensors",
"localField": "sensor",
"foreignField": "_id",
"as": "sensor"
}
},
{"$unwind":"$sensor"},
{ "$group": {
"_id": {
"timestamp": "$timestamp",
"name": "$name",
"value": "$value",
"sensor_type": "$sensor.type"
},
//"sensor":{"$first":"$sensor"},
"place":{"$first":"$sensor.place"},
"Count": { "$sum": 1 }
}},
//{$unwind:'$type'},
{ "$group": {
"_id": "$_id.timestamp",
"medidas": {
"$push": {
"name": "$_id.name",
"count": "$Count",
"value": "$_id.value",
//"sensor_type":"$ _id.sensor_type",
//"sensor":"$sensor"
"sensor_type":"$ _id.sensor_type",
"place":"$place"
},
},
"count": { "$sum": "$Count" }
}},
{ "$sort": { "_id": -1 } },
{ "$limit": 1 }
]
收藏:
{
"_id" : ObjectId("5b1027e46933440c030f8a6e"),
"name" : "temperatura_ext",
"type" : "clima",
"place" : "exterior",
"usuario" : ObjectId("5b10176084195a07f63c942a"),
"invernadero" : ObjectId("5b1027896933440c030f8a6b"),
"__v" : 0
}
***编辑02*****
我的最终目标是:
{
            "_id": "2018-08-30T16: 25: 13.159Z",
            "measurements": [
                {
                    "name": "temperature_int",
                    "count": 1,
                    "value": "45",
                    "place": "interior"
                },
                {
                    "name": "co2_ext",
                    "count": 1,
                    "value": "200",
                    "place": "exterior"
                },
                {
                    "name": "temperatura_ext",
                    "count": 1,
                    "value": "90",
                    "place": "exterior"
                },
                {
                    "name": "co2_int",
                    "count": 1,
                    "value": "70",
                    "place": "interior"
                }
            ],
            "count": 4
        }
“位置”字段必须是指传感器集合的真实字段,我只需要输入该字段的值。现在他总是给我同样的价值。