我想查询 oplog 以查找在特定时间进行的操作。如何在 MongoDB 中查找和查询 oplog。oplog放在哪里?请举例说明...我在互联网上找不到任何教程...
问问题
4298 次
2 回答
1
如果要按日期查询,则需要生成合适的 MongoDB 时间戳。您可以Date
为此目的使用该类。
例如,如果您想计算两个日期之间的条目数量,您可以尝试类似以下的查询:
db.oplog.rs.count(
{
ts:
{
$gt: Timestamp(new Date("2020-02-01").getTime() / 1000, 1),
$lt: Timestamp(new Date("2020-03-01").getTime() / 1000, 1)
}
}
);
您必须始终将Date
毫秒除以1000
,因为Timestamp
该类在秒之后运行1970-01-01
。
这是另一个示例查询,它排除了 中的一些非常常见的条目oplog
,例如"periodic noop"
:
db.oplog.rs.find(
{
ts:
{
$gt: Timestamp(new Date("2020-02-01").getTime() / 1000, 1),
$lt: Timestamp(new Date("2020-03-01").getTime() / 1000, 1)
},
"o.msg":
{
$ne: "periodic noop"
},
"ns" : {
$ne: "config.system.sessions"
}
}
).limit(5).pretty();
于 2020-03-12T11:20:08.173 回答
0
从 oplog 读取的简单查询
query = {'ts': {'$gt': some_timestamp}} # Replace with your own query.
cursor = db.oplog.rs.find(query, **_TAIL_OPTS)
于 2014-09-09T17:53:56.330 回答