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基本上具有相同的语法。 –