我的目標是使用mongodb 2.2和最新的c#驅動程序基於日期範圍執行匹配和分組。如何在Mongodb的聚合框架中構建日期範圍查詢?
我在使用日期時間的聚合框架中創建匹配查詢時遇到問題。我不知道我的數據類型是不正確的(poco有日期時間,對象是utc保存),或者如果查詢不正確,更可能。
//Here is the doc format that I'm querying:
{
"DateTime" : new Date("2/20/2013 17:29:03"),
"DateTimeString" : "20130220",
"PurchaseAmount" : 1.91,
"ProductId" : "51293ac844da932e941fa2c4",
"_id" : "20130220/51293ac844da932e941fa2c4"
}
//這裏是聚集查詢我試圖
var timeStamp = DateTime.UtcNow.AddDays(-20);
var startDate = timeStamp.Date;
var endDate = timeStamp.AddDays(1).Date;
var match = new BsonDocument
{
{
"$match",
new BsonDocument
{
{ "ProductId" , "51293ac844da932e941fa2c4"}
}
}
};
var match2 = new BsonDocument
{
{
"$match",
new BsonDocument
{
*** { "$gte" , new BsonDocument{{"DateTime", timeStamp}} } //,
*** // { "$lt" , endDate}
}
}
};
var group = new BsonDocument
{
{ "$group",
new BsonDocument
{
{ "_id", new BsonDocument
{
{ "ProductId" , "$ProductId"}
,{ "DateTime" , "$DateTime" }
}
},
{
"AvgOrder", new BsonDocument
{
{ "$avg", "$PurchaseAmount" }
}
}
}
}
};
var pipeline = new[] { match, match2, group };
var aggregateResult = dbSession.GetCollection<RecentOrders>().Aggregate(pipeline);
請參閱*。我想提供特定的時間範圍,並計算該時間段內該客戶的平均訂單(按分鐘,小時或日期範圍)。我相信除了日期範圍查詢部分(match2)之外,我可以使用它。我認爲這個問題是新的BsonDocuments和查詢的棘手組合。非常感謝,如果你能幫助!
另一種語法非常感謝你。我看起來也很乾淨。 – user376456 2013-02-26 14:24:36