小编How*_*Lee的帖子

Mongo shell 中过去 24 小时的日期范围查询

我正在设置一个cron作业来从 MongoDB 数据库分析器收集结果。我想在 24 小时内收集结果。我打算用javascript运行mongo命令。

问题是,在Mongo shell 中,如何编写查询以查找 24 小时前的日期范围?如:

db.system.profile.find({
    "timestamp" : {
        $lte : <current date & time>,
        $gt : <date & time 24 hrs ago>
    }
})
Run Code Online (Sandbox Code Playgroud)

mongodb cron

20
推荐指数
2
解决办法
14万
查看次数

使用 mongoexport 或 mongodump 备份?

对于生产备份,MongoDB 建议使用mongodump而不是mongoexport以确保数据的准确性。但是,在备份之前,我需要从 MongoDB 数据库中“清除”数据。我不知道除mongoexport之外的任何服务器端数据清理选项。两个问题:

  1. mongoexport是否访问 RAM 中的 MongoDB 缓存?它会像mongodump那样改变 RAM 中的工作集吗?
  2. mongodump命令有这个--query选项。“提供一个 JSON 文档作为查询,可以选择性地限制 mongodump 输出中包含的文档。” 排除文档中的某些字段是否需要查询?

mongodb backup

9
推荐指数
2
解决办法
1万
查看次数

MongoDB - 如何减少 numYields

我有一个大约 100GB 数据大小的 MongoDB 数据库。我用 300 个线程运行了一个测试,查询都是读取,没有写入(我猜除了写入数据库分析器)。我启用了数据库分析器来跟踪慢查询。我注意到具有高 'numYields' 的查询导致高 'millis';同样,低 numYields 的查询在低毫秒内响应非常快。

90% 的查询运行速度非常快,在 1 ~ 2 毫秒内,但是,大约 2% 的查询以 60,000 毫秒或更高的速度结束。

根据 MongoDB 文档:

numYields 是一个计数器,用于报告操作允许其他操作完成的次数。

通常,操作会在需要访问 MongoDB 尚未完全读入内存的数据时产生。这允许在 MongoDB 为让步操作读取数据时,其他在内存中有数据的操作可以快速完成。

我知道一个慢查询试图从磁盘读取数据,同时让步给内存中已经有数据的其他查询。但是,如果这导致该特定查询的 60,000 毫秒,则变得不合理。

也许有办法限制 numYields?或者也许尝试将所有内容都放在内存中?有什么建议?

mongodb

5
推荐指数
1
解决办法
8417
查看次数

标签 统计

mongodb ×3

backup ×1

cron ×1