【发布时间】:2016-06-30 07:24:09
【问题描述】:
我在那个查询中创建了一个查询,我正在使用 $unwind 多个字段。查询响应很好,但我的前辈建议我这是错误的查询。因为查询响应的格式不正确,也不是 r_y_b_phasetimestamp 时间戳的升序。我给出的查询如下:
db.energy.aggregate([
{
$project: { EventTS: 1, RPhaseVoltage: 1, YPhaseVoltage:1, BPhaseVoltage:1}
},
{
$unwind: {
path: "$RPhaseVoltage",
includeArrayIndex: "arrayIndex",
preserveNullAndEmptyArrays: true
}
},
{
$unwind: {
path: "$YPhaseVoltage",
includeArrayIndex: "arrayIndex",
preserveNullAndEmptyArrays: true
}
},
{
$unwind: {
path: "$BPhaseVoltage",
includeArrayIndex: "arrayIndex",
preserveNullAndEmptyArrays: true
}
},
{
$match: {
$and: [
{RPhaseVoltage: {$ne: null}},
{YPhaseVoltage: {$ne: null}},
{BPhaseVoltage: {$ne: null}},
]
}
},
{
$project: {
_id:0,
EventTS:1,
RPhaseVoltage: 1,
YPhaseVoltage: 1,
BPhaseVoltage:1,
r_y_b_phasetimestamp: {
"$add": [
{ "$subtract": ["$EventTS", new Date("1970-01-01")]},
{ "$multiply": [ 60000, "$arrayIndex" ] }
]
}
}
},
{
$project: {
"rvoltage_data":["$r_y_b_phasetimestamp", "$RPhaseVoltage"],
"yvoltage_data":["$r_y_b_phasetimestamp", "$YPhaseVoltage"],
"bvoltage_data":["$r_y_b_phasetimestamp", "$BPhaseVoltage"]
}
},
{
$sort:{
r_y_b_phasetimestamp:-1
}
}
]);
我的收集样本如下
{
"_id" : ObjectId("57742e0f8d8b8fdf278b45d1"),
"EventTS" : ISODate("2016-06-24T12:30:00.000+0000"),
"RPhaseVoltage" : [
null,
231.81,
231.81,
null,
231.42
],
"YPhaseVoltage" : [
229.95,
229.95,
null,
null,
231.32
],
"BPhaseVoltage" : [
null,
231.44,
231.44,
null,
null
]
}
我的图表输出链接是Graph Plotting Link。我用于绘图的这个查询。请建议我我的查询是错误的,为什么图表会像这样绘制
【问题讨论】:
-
给定示例文档,您对聚合结果的期望是什么?
标签: php mongodb mongodb-query