Mongo操作记录

Mongo查询操作日志

示例语句:db.oplog.rs.find({"ns":"your_database_name.your_collection_name", "o2._id": ObjectId("your_ObjectId")}).sort({$natural:-1}).limit(1)


db.oplog.rs.find()是MongoDB中一个系统集合(system collection),它记录了所有的MongoDB操作日志,可以用于实现数据库的备份和数据同步等功能。

该集合的每个文档代表一个操作,包括插入、更新、删除、复制等操作,并包含以下字段:

  • ts:操作发生的时间戳
  • h:主机ID(MongoDB集群环境下)
  • v:版本号
  • op:操作类型(insert/update/delete等)
  • ns:命名空间(即集合名)
  • o2:操作对象的ID
  • o:操作的具体内容

通过查询db.oplog.rs集合,我们可以获取所有的操作历史,以便进行数据备份和恢复等操作。常见的查询操作包括:

  • 查询所有操作日志:db.oplog.rs.find()
  • 查询特定时间范围内的操作日志:db.oplog.rs.find({"ts": {"$gte": startTime, "$lte": endTime}})
  • 查询特定集合的操作日志:db.oplog.rs.find({"ns": "database.collection"})
  • 查询特定操作类型的操作日志:db.oplog.rs.find({"op": "insert"})

需要注意的是,由于db.oplog.rs集合中的数据非常庞大,因此查询时应该进行适当的过滤和分页,以避免查询性能的影响。同时,建议使用$natural排序,以保证查询结果的正确性。

查询示例消息:

{
    "ts" : Timestamp(1680166078, 3),
    "t" : NumberLong(44),
    "h" : NumberLong(0),
    "v" : 2,
    "op" : "u",
    "ns" : "your_database_name.your_collection_name",
    "ui" : UUID("2116f2f4-b9c4-4c3d-be8e-c6f5a3d34f1a"),
    "o2" : {
        "_id" : ObjectId("your_ObjectId")
    },
    "wall" : ISODate("2023-03-30T08:47:58.573Z"),
    "o" : {
        "$v" : 1,
        "$set" : {
            "status" : 5,
            "updateTime" : "2023-03-30 16:47:58"
        }
    }
}

Mongo查询db下各个表大小

db.getCollectionNames().forEach(function(collectionName) {
  var stats = db[collectionName].stats();
  print("Collection: " + collectionName);
  print("Approximate data size: " + (stats.size / (1024 * 1024)).toFixed(2) + " MB");
  print("Approximate index size: " + (stats.totalIndexSize / (1024 * 1024)).toFixed(2) + " MB");
  print("=============================");
});

mongodb 设置超时时间

在 MongoDB 中,可以通过设置 socketTimeoutMS 和 connectTimeoutMS 参数来设置超时时间。

socketTimeoutMS 指定了在没有接收到服务器响应时,客户端等待响应的最长时间。这个参数的默认值为 null,表示不设置超时时间。如果你需要设置超时时间,可以将 socketTimeoutMS 参数设置为一个合适的时间,例如 5000 毫秒(5 秒):

db.adminCommand({setParameter: 1, socketTimeoutMS: 5000})

connectTimeoutMS 指定了连接 MongoDB 服务器的最长等待时间。如果连接服务器超过了这个时间,将会抛出一个异常。这个参数的默认值为 10000 毫秒(10 秒)。如果你需要设置连接超时时间,可以在 MongoDB URI 字符串中添加 connectTimeoutMS 参数,例如:

mongodb://localhost/test?connectTimeoutMS=5000
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值