で私は$使用して複数のフィールドをほどくています、そのクエリでそのクエリに1つのクエリを作成しました。クエリ応答は正常ですが、私のシニアはこれが間違ったクエリであると私に示唆していますクエリ応答は適切な形式ではなく、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で次のように。この質問はグラフのプロットに使用しています。私のクエリが間違っていると、グラフがこの
となります。集計の結果はどうなりますか? 1 'の代わりに 'r_y_b_phasetimestampの:$のr_y_b_phasetimestamp' –