2022-05-19 MongoDB部分操作记录

// 更新文档

db.getCollection("less").update({"start":"update"},{$set:{"start":"new"}})

// 查找文档

db.getCollection("userProfile").find({"status":1}).limit(1).pretty()
db.getCollection("less").find().limit(10).pretty()

// 创建删除集合
// 执行insert的时候,如果集合不存在,则会自动创建这个集合
// 删除集合 remove

db.newTable.insert({"start":"start"})
db.getCollection("less").insert({"start":"start2"})
db.getCollection("less").remove({"start":"start1"})

// 排序 1 -1(倒序)

db.getCollection("less").find().limit(10).sort({
    "_id":  - 1
}).pretty()

// or 与 and 的查询条件 并过滤展示字段

db.getCollection("userProfile").find(
    {
        "countryCode": "CN",
        $or:[
            {
                "nickName": "Hana"
            },
            {
                "nickName": "JackIos"
            }
        ]
    },
        {
            _id:0
        }
).limit(10)

// 结果处理
// 连表查询 过滤 分组

db.getCollection("userProfile").aggregate(
    [
        {
            $lookup: {  // 连表
                from: "userVedio",
                localField: "_id",
                foreignField: "userId",
                as: "userVideo"
            }
        },
                {
                        $match:{    // 过滤条件
                            "_id":3103255
                        }
                },
                {
                        $unwind:{   // 拆分数组
                            path:"$userVideo"
                        }
                },
                {
                        $group:{    // 分组
                            _id:"$_id",
                            callVideo:{
                                $min:"$userVideo.url"
                            }
                        }
                },
        {
            $limit: 10
        }
    ]
)

// 公式/数据运算

// (>) 大于 - $gt
// (<) 小于 - $lt
// (>=) 大于等于 - $gte
// (<= ) 小于等于 - $lte

// 聚合 等价于 mysql 的 group by city

db.getCollection("userProfile").aggregate([
    {
        $match: {
            "status": 1,
            "_id": 100000
        }
    },
    {
        $group: {
            _id: "$_id",
            age: {
                $min: "$age"
            },
            countryCode: {
                $min: "$countryCode"
            },
            status: {
                $min: "$status"
            }
        }
    },
    {
        $project: {
            _id: 1,
            age: 1,
            countryCode: 1,
            status: 1
        }
    },
    {
        $sort: {
            "_id": - 1
        }
    },
    {
        $limit: 10
    }
])

// 数据库监控 状态查询

db.serverStatus()

// 锁信息监控

db.serverStatus().globalLock
{
    "totalTime" : NumberLong("2651301900000"),      //自上次发生lock以来的时间
    "currentQueue" : {          //锁等待队列信息
        "total" : 0,            //因为锁而产生的排队的总数
        "readers" : 0,          //等待读锁而产生的排队数(kQueuedReader)
        "writers" : 0           //等待写锁而产生的排队数(kQueuedWriter)
    },
    "activeClients" : {         //活跃连接数信息
        "total" : 38,           //当前活跃连接数
        "readers" : 0,          //当前执行读操作的活跃连接数(kActiveReader)
        "writers" : 0           //当前执行写操作的活跃连接数(kActiveWriter)
    }
}

// 连接信息监控

db.serverStatus().connections
{
    "current": 5,                       //当前连接数
    "available": 814,                   //剩余可以连接数
    "totalCreated": NumberLong(186)     //截止到现在创建连接数
}

// 内存信息监控

db.serverStatus().mem
{
    "bits" : 64,                    //64位
    "resident" : 245,               //物理内存消耗
    "virtual" : 1262,               //虚拟内存消耗
    "supported" : true,             //支持显示额外内存信息
    "mapped" : 0,                   //映射内存
    "mappedWithJournal" : 0         //除了映射内存外还包括journal日志消耗的映射内存
}

// 错误信息监控

db.serverStatus().asserts
{
    "regular": 0,           //服务启动后asserts错误个数
    "warning": 0,           //服务启动后warning个数
    "msg": 0,               //服务启动后message asserts个数
    "user": 22,             //服务启动后user asserts格式
    "rollovers": 0          //服务启动后重置次数
}

// 网络流量监控

db.serverStatus().network
{
    "bytesIn" : NumberLong(1013083142),     //网络入流量
    "bytesOut" : NumberLong(1123552013),    //网络处流量
    "numRequests" : NumberLong(3592562)     //累积请求数
}

// 数据库状态

db.stats()
{
    "db" : "test",                          //数据库名
    "collections" : 5,                      //数据库中集合数
    "objects" : 139,                        //数据库预估数据行
    "avgObjSize" : 63.65467625899281,       //平均每行数据大小,单位为bytes
    "dataSize" : 8848,                      //当前数据库数据大小,单位为bytes
    "storageSize" : 1077248,                //当前数据库物理存储大小,单位为bytes
    "numExtents" : 5,                      
    "indexes" : 2,                          
    "indexSize" : 16352,                    //索引空间大小,单位为bytes
    "fileSize" : 67108864,                  //数据库预分配文件大小
    "nsSizeMB" : 16,
    "extentFreeList" : {
        "num" : 1,
        "totalSize" : 32768
    },
    "dataFileVersion" : {
        "major" : 4,
        "minor" : 22
    },
    "ok" : 1
}

// 查看当前活跃会话

db.currentOp()
{
    "inprog" : [
        {
            "desc" : "conn10",
            "threadId" : "0x3fdf860",
            "connectionId" : 10,
            "opid" : 380692,                        //db.killOp使用的就是该opid
            "active" : true,                        //是否活跃
            "secs_running" : 4,                     //执行时间(秒)
            "microsecs_running" : NumberLong(4603324),
            "op" : "insert",                        //执行操作类型
            "ns" : "test.cc",                       //执行操作数据库
            "insert" : {                            //执行操作语句
                "_id" : ObjectId("5bee323020e268b4d947a580"),
                "name" : "aa"
            },
            "client" : "127.0.0.1:42066",           //执行操作客户端
            "numYields" : 0,
            "locks" : {                             //执行操作需要持有锁
                "Global" : "w"
            },
            "waitingForLock" : true,                //是否锁等待 ?
            "lockStats" : {
                "Global" : {
                    "acquireCount" : {
                        "r" : NumberLong(1),
                        "w" : NumberLong(1)
                    },
                    "acquireWaitCount" : {
                        "w" : NumberLong(1)
                    },
                    "timeAcquiringMicros" : {
                        "w" : NumberLong(22503637)
                    }
                }
            }
        }
    ],
    "fsyncLock" : true,                             //是否全局锁定数据库
    "info" : "use db.fsyncUnlock() to terminate the fsync write/snapshot lock"
}

// 杀掉慢会话

db.killOp(380692)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容