如何获取查询中的所有字段

时间:2018-03-21 05:19:53

标签: javascript mongodb mongoose aggregate-functions mongoose-schema

我正在尝试在这个聚合工作,但没有得到所有字段如何获得所有字段任何建议我我怀疑任何错误此查询请检查



db.lights.aggregate({
  $match: {
    CREATE_DATE: {
      $gte: ISODate("2018-01-24T20:05:30.000Z"),
      $lt: ISODate("2018-02-24T20:05:30.000Z")
    }
  }
}, {
  $addFields: {
    offduration: {
      $divide: [{
        $subtract: ["$RECEIVEDDATE", "$CREATE_DATE"]
      }, 3600000]
    }
  }
}, {
  "$group": {
    _id: {
      SWITCHID: "$SWITCHID",
      STATUS: "$STATUS"
    },
    avgduration: {
      $avg: "$offduration"
    }
  }
}, {
  $project: {
    _id: 1,
    SWITCHID: 1,
    CREATE_DATE: 1,
    RECEIVEDDATE: 1,
    STATUS: 1,
    avgduration: '$avgduration',
    offduration: '$offduration'
  }
})




1 个答案:

答案 0 :(得分:0)

试试这个,

db.lights.aggregate({
    $match: {
        CREATE_DATE: {
            $gte: ISODate("2018-01-24T20:05:30.000Z"),
            $lt: ISODate("2018-02-24T20:05:30.000Z")
        }
    }
}, {
    $addFields: {
        offduration: {
            $divide: [{
                $subtract: ["$RECEIVEDDATE", "$CREATE_DATE"]
            }, 3600000]
        }
    }
}, {
    "$group": {
        _id: {
            SWITCHID: "$SWITCHID",
            STATUS: "$STATUS"
        },
        avgduration: {
            $avg: "$offduration"
        },
        SWITCHID: {
            $first: "$SWITCHID"
        },
        CREATE_DATE: {
            $first: "$CREATE_DATE"
        },
        RECEIVEDDATE: {
            $first: "$RECEIVEDDATE"
        },
        STATUS: {
            $first: "$STATUS"
        },
        offduration: {
            $first: "$offduration"
        },
    }
}, {
    $project: {
        _id: 1,
        SWITCHID: 1,
        CREATE_DATE: 1,
        RECEIVEDDATE: 1,
        STATUS: 1,
        avgduration: '$avgduration',
        offduration: '$offduration'
    }
})

你也可以使用$$ ROOT,它会在数据中添加整个对象。您必须使用data.key

进行推荐
{
    $group: {
        _id: {
            SWITCHID: "$SWITCHID",
            STATUS: "$STATUS"
        },
        data: {
            $first: "$$ROOT"
        }
    }
}