【问题标题】:What is the fastest way to see when the last update to MongoDB was made查看最后一次更新 MongoDB 的最快方法是什么
【发布时间】:2012-12-29 05:15:23
【问题描述】:

我正在编写一个长轮询脚本来检查我的 mongo 集合中的新文档,而我知道的唯一方法是检查我的循环的过去迭代中是否进行了更改获取最后一个文档的 ID 并解析该 ID 中的时间戳,并查看它是否大于自上次发出请求以来剩余的时间戳。

是否有某种方法不涉及每次都进行查询或使查询最快的方法?

我在想这样一个查询:

db.chat.find().sort({_id:-1}).limit(1);

但它会使用 PHP 驱动程序。

【问题讨论】:

  • 通过拉取最新的文档 ID,您将找到最新的插入,但不会捕捉到现有文档的最新更新。这是你想要的吗?
  • @SergioTulentsev 我想要最新的插入。假设它会按照我认为的方式工作,这些文档不会被更新。但我认为,两者都应该适合我的目的。
  • 在这种情况下,查询应该足够快。 _id 字段已编入索引。无论如何,如果没有某种查询,您将如何获取数据?
  • 您的查询是否存在性能问题?顺便问一下,它是什么样子的?
  • @SergioTulentsev 我猜这是有道理的。我对这种事情很陌生。我只是希望它尽可能快,因为我正在尝试构建一个可能有几百个用户的聊天室,每个用户每 10 毫秒进行一次迭代。我什至不知道我正在尝试的是否实用。

标签: mongodb long-polling


【解决方案1】:

最快的方法是在timestamp 字段上创建索引。

Creating index:

db.posts.ensureIndex( { timestamp : 1 } )

Optimizes this query:

db.posts.find().sort( { timestamp : -1 } )

findOne 只给你一个最后的时间戳。

很高兴为您提供帮助。

【讨论】:

    【解决方案2】:

    @Zagorulkin 您的建议肯定会在所需的情况下有所帮助。但是我不认为 sort() 与 findOne() 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 2019-10-30
      • 2015-12-07
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多