我在 mongodb(pymogno 驱动程序)中的查询遇到了一些问题。
这是我的问题:我必须每天向 mongodb 插入(更新)大约 1 亿(100000000)个文档。我放弃了使用更新必须更新附加的相同关键字段,并修改为使用批量插入(更新性能比批量插入慢)。
这是我的数据库中的草图方案。
{_id:xxx, F1:1 , F2:"test1", TS": 2011/01}
{_id:xxx, F1:1 , F2:"test2", TS": 2011/02}
{_id:xxx, F1:2 , F2:"test1", TS": 2011/03}
{_id:xxx, F1:3 , F2:"test1", TS": 2011/04}
{_id:xxx, F1:2 , F2:"test1", TS": 2011/05}
.....
(4 billion up or more)
查询时只想按F1(field1)检索最新的TS组。
我知道“组”聚合框架可以做到这一点,但我已经分片我的数据库和组操作不允许分片数据库。
我也尝试使用 map-reduce 来做到这一点,但它不能提供足够好的查询性能。
我使用的唯一查询是“$in”操作。
db.test.find({"F1":{"$in":[1,2,3,....]}})
它检索目标数组中的所有文档,但我只想获取每个键 F1 的最新文档。
{_id:xxx, F1:1 , F2:"test2", TS": 2011/02}
{_id:xxx, F1:2 , F2:"test1", TS": 2011/05}
{_id:xxx, F1:3 , F2:"test2", TS": 2011/03}
我怎么能得到那个?
附言。目标数组可能包含我想要批量查询的一百万个元素。
有没有好的方法来做到这一点?