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