Javascript mongo db聚合如何获取所有字段
我正在尝试写入聚合总平均持续时间。Javascript mongo db聚合如何获取所有字段,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我正在尝试写入聚合总平均持续时间。 我得到了输出,但不是所有字段。 如何获取结果中的所有字段 任何人都可以推荐我 db.lights.aggregate( { $match: { CREATE_DATE: { $gte: ISODate("2018-01-24T20:05:30.000Z"), $lt: ISODate("2018-02-24T20:05:30.000Z") } } },
我得到了输出,但不是所有字段。 如何获取结果中的所有字段 任何人都可以推荐我
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: 0,
SWITCHID: 1,
CREATE_DATE: 1,
RECEIVEDDATE: 1,
STATUS: 1,
avgduration: '$avgduration',
offduration: '$offduration'
} },
{"$group" : {
_id: { SWITCHID: "$SWITCHID" },
on_minus_off: {
$sum:{ "$cond": [
{ "$eq": ["$STATUS", "LIGHTS OFF"] },
"$avgduration",
{ $subtract: [ 0, "$avgduration" ] }
]
}
}
}
}
)
您希望为第一个管道中的必填字段添加“$project”
。然后你想在$group
管道中这样应用
//并在$group中添加以下内容
requiredField1 : {
$first: "$requiredField1" // Projected Name in Projection Section
},
你能把这个问题正确地编排格式吗。因此,我建议您尝试使用更简单的聚合查询,并在得到所需内容时增加其复杂性。
requiredField1 : {
$first: "$requiredField1" // Projected Name in Projection Section
},
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: 0,
SWITCHID: 1,
CREATE_DATE: 1,
RECEIVEDDATE: 1,
STATUS: 1,
avgduration: '$avgduration',
offduration: '$offduration'
}
},
{
"$group": {
_id: {
SWITCHID: "$SWITCHID"
},
requireFiled1 : {
$first: "$requireFiled1"
},
on_minus_off: {
$sum: {
"$cond": [
{
"$eq": [
"$STATUS",
"LIGHTS OFF"
]
},
"$avgduration",
{
$subtract: [
0,
"$avgduration"
]
}
]
}
}
}
})