我正在寫一個長輪詢腳本來檢查我的mongo集合中的新文檔,以及我知道檢查是否更改的唯一方法在我的循環的過去迭代中做了一個查詢,獲取最後一個文檔的ID並解析出該ID中的時間戳,並查看它是否大於自上次發出請求後剩下的時間戳。什麼是最快的方式來查看最後一次更新到MongoDB
是否有某種方法不涉及每次查詢或使查詢最快?
我想查詢這樣的:
db.chat.find().sort({_id:-1}).limit(1);
但它會使用PHP驅動程序。
我正在寫一個長輪詢腳本來檢查我的mongo集合中的新文檔,以及我知道檢查是否更改的唯一方法在我的循環的過去迭代中做了一個查詢,獲取最後一個文檔的ID並解析出該ID中的時間戳,並查看它是否大於自上次發出請求後剩下的時間戳。什麼是最快的方式來查看最後一次更新到MongoDB
是否有某種方法不涉及每次查詢或使查詢最快?
我想查詢這樣的:
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
給你只有一個最後的時間戳。
很高興爲您效勞。
@Zagorulkin你的建議肯定會在需要的情況下提供幫助。但我不認爲sort()與findOne()一起工作。
通過拉取最新的文檔ID,您會發現最新的插入,但不會捕獲最新的更新到現有的文檔。這是你想要的嗎? –
@SergioTulentsev我想要最新的插入。這些文件將不會被更新,假設它會以我認爲的方式工作。但是,我認爲,或者應該爲我的目的而工作。 –
在這種情況下,查詢應該足夠快。 '_id'字段被索引。無論如何,你如何獲得數據而不需要查詢某種類型的數據? –