看似简单的任务对我来说是一个挑战。
我有以下 mongodb 结构:
{
(...)
"services": {
"TCP80": {
"data": [{
"status": 1,
"delay": 3.87,
"ts": 1308056460
},{
"status": 1,
"delay": 2.83,
"ts": 1308058080
},{
"status": 1,
"delay": 5.77,
"ts": 1308060720
}]
}
}}
现在,以下查询返回整个文档:
{ 'services.TCP80.data.ts':{$gt:1308067020} }
我想知道 - 我是否可以只接收那些符合 $gt 标准的“数据”数组条目(某种缩小的文档)?
我正在考虑 MapReduce,但找不到关于如何将外部参数(时间戳)传递给 Map() 函数的单个示例。 (此功能是在1.1.4中添加的https://jira.mongodb.org/browse/SERVER-401 https://jira.mongodb.org/browse/SERVER-401)
另外,总是有一种替代方法来编写storedJs函数,但由于我们谈论的是大量数据,因此这里不能容忍数据库锁。
我很可能必须将结构重新设计为 1 层深度,例如:
{
status:1,delay:3.87,ts:138056460,service:TCP80
},{
status:1,delay:2.83,ts:1308058080,service:TCP80
},{
status:1,delay:5.77,ts:1308060720,service:TCP80
}
但数据库将急剧增长,因为“服务”只是附加每个文档的众多选项之一。
请指教!
提前致谢