【问题标题】:Flask-PyMongo collModFlask-PyMongo collMod
【发布时间】:2015-03-30 10:20:58
【问题描述】:

我正在尝试使用 PyMongo 更新 TTL 集合。试图运行这个我得到'failed no such cmd: index'

client.db.command({'collMod': url,
                    'index': {'keyPattern': {'dateCreated':1},
                           'expireAfterSeconds': 3600}})

有人指出我做错了什么吗?

【问题讨论】:

    标签: mongodb pymongo


    【解决方案1】:

    好吧,我刚刚决定切换我的索引,而不是设置我希望文档在数据库中过期的时间,而不是使用

    来说明我希望文档存在多长时间
    db.test.ensure_index("expireOn", expireAfterSeconds=0)
    

    现在我可以将该字段设置为我希望条目过期的未来时间,而不必更改索引。 似乎很奇怪,到目前为止还没有办法使用 python 以编程方式更新索引

    【讨论】:

      【解决方案2】:

      我相信假设 url 包含您正在修改的索引的集合的名称,这将起作用:

      client.db.command('collMod', url,
                        index={'keyPattern': {'dateCreated':1},
                               'expireAfterSeconds': 3600}})
      

      对于其他正在寻找解决方案的人,我通过以下方式进行了管理:

      client.db.command('collMod', 'notifications', 
                        index={'keyPattern': {'expr': 1}, 
                               'background': True, 
                               'expireAfterSeconds': 604800})
      

      这会导致以下输出:

      {u'expireAfterSeconds_old': 3888000, 
       u'expireAfterSeconds_new': 604800, u'ok': 1.0}
      

      【讨论】:

      • 太棒了。这是我对 Python 和文档的天真。对于需要多个参数的命令,我不理解他们示例中文档的 kwargs 部分,但您的示例现在很有意义。
      • 完美运行!泰
      猜你喜欢
      • 2015-05-25
      • 2016-06-05
      • 2015-02-25
      • 2013-05-28
      • 2018-02-27
      • 2014-08-16
      • 2017-09-07
      • 2020-07-21
      • 2012-04-09
      相关资源
      最近更新 更多