2
mongodb javaドライバを使用して集約関数でグループを書き込もうとしています。mongodb javaドライバ集約グループby
ここにデータベースのドキュメント構造を示します。
{ "_id" : ObjectId("58819bd9f16a7802523bc077"), "Date" : "12/19/2016", "Time" : "4:15:00", "Temperature" : 65.5, "User" : "A", "ThermalComfort" : -1, "settingID" : ObjectId("58819bd6f16a7802523bbdc5") }
{ "_id" : ObjectId("58819bd9f16a7802523bc078"), "Date" : "12/19/2016", "Time" : "4:30:00", "Temperature" : 65.25, "User" : "A", "ThermalComfort" : -1, "settingID" : ObjectId("58819bd6f16a7802523bbdc5") }
ThermalComfortのみを投影する「日付」と「時間」でグループ化したいと思います。私の予想される出力は、{date = 12/19/16、time = 0:00:00、listOfTC = [2,1]}です。 listOfTCはArrayの各読み取り値からなるリストです(例:[-1、-1])
ここに私が書いたコードがあります。
AggregateIterable<Document> iterable = themalComfortProfileCollection.aggregate(Arrays.asList(
new Document("$group", new Document("_id", "$Date" + "$Time").append("count", new Document("$sum", 1))),
new Document("$project", new Document("comfortIndex", "$ThermalComfort"))));
ただし、ドキュメントを印刷すると、nullドキュメントが表示されます。
for (Document doc : iterable) {
System.out.println(doc);
}
Document{{_id=null}}
どの部分が間違っているか説明できますか?
$のグループステージのためにこれを試してください:新規ドキュメント「(.append( "_ ID"、新文書( "日付"、 "$日付")( "時間"、 "$時間")を追加します。) ( "$ sum"、1))) – felix
「ThermalComfort」だけを投影するときに、なぜグループ分けしていますか?あなたの質問を予想される結果で更新してください。 – Veeram
@felix、ありがとうございます!出来た。しかし、出力の問題が発生しました。私はこのように出力を印刷したいと思います。 {date = 12/19/16、time = 0:00:00、listOfTC = [2,1,3,4,5]}次に、コードをどのように変更すればよいですか? – ejshin1