Mongo Date或Number(epoch)作为索引?

时间:2014-02-03 19:43:44

标签: node.js mongodb mongoose

我有一个查询,我经常运行,我使用Date来排序。基本上我想抓住下一个用户根据上次处理时的“处理”,但我不想每隔X分钟更频繁地处理用户。

我有这个问题;

Users.findOne({'status':'active',  'lastCheck': {"$lt": sinceTime}).sort({"lastCheck": "ascending"}).exec(callback);

我知道为了实现这一点,我需要将lastCheck设置为索引,但这是Date。将其存储为数字或日期更好吗?

也许有更好的方法可以完全做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:1)

From here:" BSON Date是一个64位整数,表示自Unix纪元(1970年1月1日)以来的毫秒数。"。因此,如果您将其存储为millis,您将无法获得任何好处。我认为将它存储为Date会更好,因为您可以在堆栈中进行各种数据完整性检查和转换。使用$lt绝对适合日期。

至于索引,你必须仔细挑选。 MongoDB在查询条件中只能使用一个索引。在这里你要查询2个字段,所以复合索引可能更好 - 取决于你的数据。也许我甚至会在lastCheck上创建一个索引。您可以在sort中使用相同的索引,因为您按该字段进行排序。 Mongo能够使用另一个索引进行排序。