【发布时间】:2011-03-17 22:30:11
【问题描述】:
我有一个事件集合=[timestamp, accountId, deviceId, rfid ...]
-rfids 可以为空,但其他所有内容都不能为空 - rfid 通过 deviceId 报告
我需要找到我系统中每个 rfid 的状态。乍一看,如果我们映射到 {accountId,deviceId,rfid},这似乎微不足道,但是,rfids 状态也取决于报告的 deviceIds 事件。当设备报告时,它会将 rfid 值设置为空(例如设备可能会重新启动)。我将如何根据 {accountId,deviceId,rfid} 定义单个映射函数,然后将地图集合与所有 {accountId,deviceId, null} 映射集合联合起来?
现在我按如下方式使用 linq 来获取我想要的数据集:
events.GroupBy(new{deviceId, accountId}).Select( x=>new{
Key= x.Key
Value = x.GroupBy(y=>new{y.accountId, y.rfid}).Union(x.Where(z=>z.rfid== null))).ToList()
});
【问题讨论】:
-
我想要做的是将两个空间映射到 1(即 accountId、deviceId、rfid 和 accountId、deviceId、null => 相同的空间)有没有办法可以使用 '$or' 运算符在我的 emit() 函数中,尤其是在定义键时?
标签: c# linq mongodb map mapreduce