我正在编写一个长轮询脚本来检查我的mongo集合中的新文档,并且我知道检查是否在我的循环的过去迭代中是否进行了更改的唯一方法是进行查询获取最后一个文档的ID并解析该ID中的时间戳,并查看它是否大于我上次发出请求后留下的时间戳。
是否有某种方法不涉及每次进行查询或使查询最快的事情?
我在考虑这样的查询:
db.chat.find().sort({_id:-1}).limit(1);
但它会使用PHP驱动程序。
答案 0 :(得分:1)
最快的方法是在timestamp
字段上创建索引。
Creating index:
db.posts.ensureIndex( { timestamp : 1 } )
Optimizes this query:
db.posts.find().sort( { timestamp : -1 } )
findOne
只为您提供最后一个时间戳。
答案 1 :(得分:0)
@Zagorulkin您的建议肯定会在所需的方案中提供帮助。但是我不认为sort()适用于findOne()。