四时宝库

程序员的知识宝库

MongoDB 使用技巧记录(十一)(mongodb简单使用)

MongoDB 使用技巧记录(十一)

一:删除及查找指定日志记录

查找记录

db.InfoLog.find({CreateDateTime:{$gte:"2016-08-07 00:00:00"}});

删除单条记录:

db.system.users.remove({_id:'admin.root'});

删除记录

db.InfoLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});

WriteResult({ "nRemoved" : 14257935 })

shell 处理

#!/bin/bash

DelDay=7

CurDay="`date +\"%Y-%m-%d %H:%M:%S\"`"

DateAgos=`date -d "${DelDay} day ago" +"%Y-%m-%d %H:%M:%S"`

echo $DateAgos

#del HospitalServiceLogging of 7 days ago

echo -e "use HospitalServiceLogging\n db.InfoLog.remove({CreateDateTime:{\$lt:\"${DateAgos}\"}});"|mongo --host 10.0.0.60 --port 27017

db.ErrorLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});

db.InfoLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});

db.WarningLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});

db.UserErrorLog.remove({CreateDateTime:{$lt:"2016-08-01 00:00:00"}});

mongodb 中批量删除特定字段里指定日期的记录

> use HospitalServiceLogging

switched to db HospitalServiceLogging

> show collections;

ErrorLog

InfoLog

WarningLog

system.indexes

> db.InfoLog.remove({ CreateDateTime : { $lt : "2016-08-02 00:00:00" } } );

WriteResult({ "nRemoved" : 30012 })

>

如:db.InfoLog.remove({ CreateDateTime : { $lt : "2016-08-02 00:00:00" } } );

删除 InfoLog 中 CreateDateTime 字段值 小于 8月2号的记录

CreateDateTime 字段值

$lt 小于

内网删除指定时间记录值

db.InfoLog.remove({CreateDateTime:{$lt:"2016-08-15 00:00:00"}});

db.WarningLog.remove({CreateDateTime:{$lt:"2016-08-16 00:00:00"}});

db.ErrorLog.remove({CreateDateTime:{$lt:"2016-08-16 00:00:00"}});


二:使用技巧

Q6: 最大连接数

version: '3.8'
services:
  mongodb:
    #image: mongodb/mongodb-community-server:6.0.6-ubuntu2204
    image: mongo:4.4.0
    container_name: mongodb
    hostname: mongodb
    privileged: true
    ulimits:
      nofile:
        soft: 3000
        hard: 3000         
    environment:
      TZ: Asia/Shanghai
      MONGODB_INITDB_ROOT_USERNAME: root
      MONGODB_INITDB_ROOT_PASSWORD: Aa123456
    restart: always
    volumes:
      - /data/mongo/configdb:/data/configdb
#      - /data/mongo/mongod.conf:/data/conf/mongod.conf
      - /data/mongo/db:/data/db
      - /data/mongo/backup:/data/backup
      - /data/mongo/logs:/data/logs
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "27017:27017"
    networks:
      - meta 
#    command: --config /data/conf/mongod.conf
networks:
  meta:
    external: true

docker 部署时候启动的增加limit默认参数,mongo最大连接数

    ulimits:
      nofile:
        soft: 3000
        hard: 3000 


nerdctl inspect 423cf4a0471e

查看:

db.serverStatus().connections.available

db.serverStatus().connections;

db.currentOp(true).inprog.filter(op => op.client).length

系统配置最大值

/etc/profile

#core

ulimit -n 65535

Q5:mongostat 查看性能

docker exec 98318ac0c9c0 mongostat -h mongo-rs/192.168.102.51:27017,192.168.102.52:27017,192.168.102.53:27017 -u=root -p=Aa123456 --authenticationDatabase=admin

Q4:查看当前操作

db.currentOp是个好东西,顾名思义,就是当前的操作。在mongodb中可以查看当前数据库上此刻的操作语句信息,包括insert/query/update/remove/getmore/command等多种操作

#下面的示例返回对于数据库db1运行时间大于3秒的所有活动操作:
db.currentOp(   
   {    
     "active" : true,    
     "secs_running" : { "$gt" : 3 },    
     "ns" : /^db1./    
   }    
)

Q3: 查看collections结构

db.user_info.find().limit(1)

Q2:查看操作日志记录

db.oplog.rs.find({"ns":"user.user_info"}).limit(1)

Q1:是否使用索引

db.表名.find(条件).explain() 查看分析结果

db.collection.getIndexes()  // 查看集合索引
db.collection.createIndex() // 创建集合索引
db.collection.dropIndex()   // 删除集合索引

查看索引

db.user_info.getIndexes()


查询一条记录或查看collection格式

db.user_info.find().limit(1)


分析是否使用解析

db.user_info.find({"user_id":"1691708133484793856"}).explain()


表示索引执行成功 indexBounds

#################

1.批量添加字段

> db.meng.find();

{ "_id" : ObjectId("585b93023d7b30d0969dde31"), "name" : "meng" }

{ "_id" : ObjectId("585b930d3d7b30d0969dde32"), "id" : 2 }

> db.meng.update({},{$set:{age:"20"}},{multi:1});

WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

> db.meng.find();

{ "_id" : ObjectId("585b93023d7b30d0969dde31"), "name" : "meng", "age" : "20" }

{ "_id" : ObjectId("585b930d3d7b30d0969dde32"), "id" : 2, "age" : "20" }

>

2.时间转换

c:\Servers\Mongo\bin>mongoexport.exe --csv -f "CreatedTime" -c User -d ce -h localhost

connected to: localhost

CreatedTime

2011-10-28T01:12:40Z

3.Mongodb 程序连接方法

uri = "mongodb://root:hk_2016Aug15@120.25.134.127:27017/admin?authMechanism=SCRAM-SHA-1"

4.如何查看mongodb中的记录值格式

db.UserErrorLog.findOne();

查看记录值显示基本的字段定义;

5.如何根据日志时间排序

如时间字段 ExceptionDate

逆序

db.UserErrorLog.find().sort({"ExceptionDate":-1});

升序

db.UserErrorLog.find().sort({"ExceptionDate":1});

6.显示限定记录数

只列出1条记录

db.UserErrorLog.find().sort({"ExceptionDate":-1}).limit(1);

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接