关于MongoDB数据模型存在很多关于存储旧修订文档的文章和SO问题。MongoDB-修订数据设计
但是,我没有发现任何满足我的要求之一;我需要追溯查询数据库以明确查找与给定时间点的任意条件相匹配的所有文档。
为了澄清,我需要能够有效地回答这个问题;
“在时间T哪些文档(和优选版本)匹配条件{X:Y ...}”。
伪代码:
/* Would match a version that were active from 2010 - 2016-05-01 with zipcode 12345 */
db.my_objs.find({zipcode: "12345", ~time: ISODate("2016-01-01 22:14:31.003")~})
我还没有设法找到任何解决方案,无论是在谷歌也不是我自己。我努力了;
- 有“我的查询时间点,这也符合其他标准之前的第一个项目”一个简单的“从” -timestamp上的数据,然后选择,但我还没有成功地表达,在蒙戈。
- 在每个版本中都有一个from/to,并且每当我编写一个新版本时,都要更新以前版本的“to”以匹配新版本。但是,我还没有找到一种方法来做到这一点原子或最终的一致性,这意味着多个更新可能会造成严重破坏和创建不明确的时间表。 (相同时间点的双项)
任何想法?
编辑 #1
db.my_objs.find({
data : {
$elemMatch : {
from : {
$lte : ISODate('2015-01-01')
}
}
}
}, {
"data.$" : 1
}).forEach(function (obj) {
if(obj.data[0].state == 'active') {
printjson(registrar)
}
})–
你能告诉你的 '点1' 的查询? – profesor79
正如我写的,我一直无法表达这样的疑问? – Rawler
好的,明白了 - 正在考虑你有一个这样的草图 – profesor79