我将根据两个现有集合之间的比较来填充第三个集合,涉及到it技术相关内容。
需要进行比较的两个集合具有以下模式:
// Settings collection:
{
"Identifier":"ABC123",
"C":"1",
"U":"V",
"Low":116,
"High":124,
"ImportLogId":1
}
// Data collection
{
"Identifier":"ABC123",
"C":"1",
"U":"V",
"Date":"11/6/2013 12AM",
"Value":128,
"ImportLogId": 1
}
我是MongoDB和NoSQL的新手,因此很难掌握如何操作。相应的SQL查询可能如下:
SELECT s.Identifier, r.ReadValue, r.U, r.C, r.Date
FROM Settings s
JOIN Reads r
ON s.Identifier = r.Identifier
AND s.C = r.C
AND s.U = r.U
WHERE (r.Value <= s.Low OR r.Value >= s.High)
在这种情况下,使用示例数据,我希望返回一条记录,因为来自Data集合的值大于来自setting集合的高值。是否可以使用Mongo查询或MapReduce实现此目标,或者是不良的集合结构(即可能应该将所有内容放入一个集合中)?
还有几个附加说明: Settings集合每个“标识符”应该只有1条记录。Data集合将有许多记录每个“标识符”。此过程可能会一次扫描数十万个文档,因此需要考虑资源问题。