我想查询oplog以查找在特定时间内进行的操作。 如何在MongoDB中查找和查询oplog。放置oplog的地方?请举例说明......我无法通过互联网找到任何教程......
答案 0 :(得分:0)
从oplog读取的简单查询
query = {'ts': {'$gt': some_timestamp}} # Replace with your own query.
cursor = db.oplog.rs.find(query, **_TAIL_OPTS)
答案 1 :(得分:0)
如果要按日期查询,则需要生成正确的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();