0
我期待從MongoDB中選擇不同的年份。我可以基於大於或小於時間的查詢來完成查詢,查詢返回完整日期對象,但在這種情況下,我想從字段timestamp
獲取唯一年份的字符串列表。從MongoDB查詢唯一年份
_dbClient = new MongoClient();
_dbServer = _dbClient.GetServer();
_dbDatabase = _dbServer.GetDatabase("test");
_collectionSamples = _dbDatabase.GetCollection<Sample>("samples");
var samples = _collectionSamples.findAll().Distinct(...);
而且我查詢類是
[BsonIgnoreExtraElements]
[DataContract]
public class NeuralSample
{
[DataMember]
public ObjectId _id
{
get;
set;
}
[DataMember]
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime timestamp
{
get;
set;
}
[DataMember]
public float alpha_low
{
get;
set;
}
}
我相信,在鮮明的,我需要使用字段「時間戳」儘管這將返回所有時間戳(結果數萬名),而不是僅僅幾年(1至2個結果)。
我能做到這一點通過使用
db.samples.aggregate([
{ $group :
{ _id :
{ year : { $year : "$timestamp" } },
total : { $sum : 1 }
}
}])
這給我的一切,我有樣品多年的陣列的命令行界面(或至少一對夫婦反覆拉出我想要的數據) ,連同計數清單。多年來,最高級別的查詢,這是很好的,但在某些時候,我會想要在年份'x'中查詢樣本的月份,全部使用C#驅動程序。任何幫助將不勝感激。
我SO環顧四周,這是最接近的問題,我能找到我的
Select Distinct
謝謝!
聚集查詢是正確的做法。爲什麼這會成爲幾個月的問題?只需使用$ match過濾第一個到「x」年的日期,然後用$月做同樣的$組。 –
@AsyaKamsky我可以做聚合,但我似乎無法得到它在C#驅動程序中工作,我找不到任何有用的例子,在哪裏應用2個過濾器,年份和月份,以聚合。 – clamport
我不明白你的意思是兩個過濾器 - 你不會只是做日期範圍比較嗎? $ match與find基本上具有相同的語法。 –