高质量视频素材网站,企业网站建设的方法有哪些,wordpress 全局字段,互联网技术的发展文章目录 前言数据库的创建和删除集合的创建和删除文档的插入和查询异常处理更新数据局部修改符合条件的批量更新加操作 删除文档删除全部数据删除符合条件的数据 统计count统计有多少条数据统计特定条件有多少条数据 分页查询排序查询正则查询比较查询包含查询条件连接查询索引… 文章目录 前言数据库的创建和删除集合的创建和删除文档的插入和查询异常处理更新数据局部修改符合条件的批量更新加操作 删除文档删除全部数据删除符合条件的数据 统计count统计有多少条数据统计特定条件有多少条数据 分页查询排序查询正则查询比较查询包含查询条件连接查询索引查看索引创建索引删除索引 前言
我们这里使用的mongoshmongodb shell。因为mongo7.0本体没有mongo命令了。
数据库的创建和删除
创建数据库 use 数据库名称 mongodb 如果没有这个数据库就会直接创建
删除数据库 db.dropDatabase() 显示全部的数据库 show databases show dbs 集合的创建和删除
创建集合 db.createCollection(“集合的名称”) 集合的删除 db.集合的名称.drop() 显示全部的集合 show collections 文档的插入和查询
文档(document)的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。
单个插入内容 db.comment.insert({“articleid”:“100000”,“content”:“今天天气真好阳光明媚”,“userid”:“1001”,“nickname”:“Rose”,“createdatetime”:new Date(),“likenum”:NumberInt(10),“state”:null}) 请注意我们这里使用了comment这个是集合的名字我们这样使用如果没有这个集合就会创建一个集合
批量插入注意如果某条插入失败了mongodb不会回滚 db.comment.insertMany([ {“_id”:“1”,“articleid”:“100001”,“content”:“我们不应该把清晨浪费在手机上健康很重要一杯温水幸福你我 他。”,“userid”:“1002”,“nickname”:“相忘于江湖”,“createdatetime”:new Date(“2019-08 05T22:08:15.522Z”),“likenum”:NumberInt(1000),“state”:“1”}, {“_id”:“2”,“articleid”:“100001”,“content”:“我夏天空腹喝凉开水冬天喝温开水”,“userid”:“1005”,“nickname”:“伊人憔 悴”,“createdatetime”:new Date(“2019-08-05T23:58:51.485Z”),“likenum”:NumberInt(888),“state”:“1”}, {“_id”:“3”,“articleid”:“100001”,“content”:“我一直喝凉开水冬天夏天都喝。”,“userid”:“1004”,“nickname”:“杰克船 长”,“createdatetime”:new Date(“2019-08-06T01:05:06.321Z”),“likenum”:NumberInt(666),“state”:“1”}, {“_id”:“4”,“articleid”:“100001”,“content”:“专家说不能空腹吃饭影响健康。”,“userid”:“1003”,“nickname”:“凯 撒”,“createdatetime”:new Date(“2019-08-06T08:18:35.288Z”),“likenum”:NumberInt(2000),“state”:“1”}, {“_id”:“5”,“articleid”:“100001”,“content”:“研究表明刚烧开的水千万不能喝因为烫 嘴。”,“userid”:“1003”,“nickname”:“凯撒”,“createdatetime”:new Date(“2019-08 06T11:01:02.521Z”),“likenum”:NumberInt(3000),“state”:“1”} ]); 查询全部数据如果没有数据就是空 db.comment.find() 条件查询注意这里会返回全部的符合条件的数据 db.comment.find({articleid:“100001”}) 条件查询limit 只返回第一条数据 db.comment.findOne({article:“100001”}) 查询部分显示 db.comment.find({articleid:“100001”},{articleid:1}) 异常处理 try { db.comment.insertMany([ {“_id”:“1”,“articleid”:“100001”,“content”:“我们不应该把清晨浪费在手机上健康很重要一杯温水幸福你我他。”,“userid”:“1002”,“nickname”:“相忘于江湖”,“createdatetime”:new Date(“2019-0805T22:08:15.522Z”),“likenum”:NumberInt(1000),“state”:“1”}, {“_id”:“2”,“articleid”:“100001”,“content”:“我夏天空腹喝凉开水冬天喝温开水”,“userid”:“1005”,“nickname”:“伊人憔悴”,“createdatetime”:new Date(“2019-08-05T23:58:51.485Z”),“likenum”:NumberInt(888),“state”:“1”}, {“_id”:“3”,“articleid”:“100001”,“content”:“我一直喝凉开水冬天夏天都喝。”,“userid”:“1004”,“nickname”:“杰克船长”,“createdatetime”:new Date(“2019-08-06T01:05:06.321Z”),“likenum”:NumberInt(666),“state”:“1”},{“_id”:“4”,“articleid”:“100001”,“content”:“专家说不能空腹吃饭影响健康。”,“userid”:“1003”,“nickname”:“凯撒”,“createdatetime”:new Date(“2019-08-06T08:18:35.288Z”),“likenum”:NumberInt(2000),“state”:“1”}, {“_id”:“5”,“articleid”:“100001”,“content”:“研究表明刚烧开的水千万不能喝因为烫嘴。”,“userid”:“1003”,“nickname”:“凯撒”,“createdatetime”:new Date(“2019-0806T11:01:02.521Z”),“likenum”:NumberInt(3000),“state”:“1”}]);} catch (e) {print (e)}
更新数据
注意我自己测试mongodb7所有的更新操作必须要有院子操作符也就是$set,$inc 这些东西不然会报错
局部修改 db.comment.update({_id:“1”},{$set:{likenum:NumberInt(1001)}}) 符合条件的批量更新
我们的凯撒有两条数据我们想一起修改 db.comment.update({userid:“1003”},{$set:{nickname:“凯撒大帝”}},{multi:true}) 加操作 db.comment.update({_id:“3”},{$inc:{likenum:NumberInt(1)}}) 后面可以写你想加的数字
删除文档
注意remove在未来会被弃用 DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.
删除全部数据 db.comment.remove({}) 删除符合条件的数据 db.comment.remove({_id:“1”}) 统计count
注意count在未来会被弃用 DeprecationWarning: Collection.count() is deprecated. Use countDocuments or estimatedDocumentCount.
统计有多少条数据 db.comment.count() 统计特定条件有多少条数据 db.comment.count({userid:“1003”} 分页查询
分页查询就是MySQL里的limit和offset limit 就是只要几条数据offset就是跳过几条数据 在mongodb里面limit还是limitoffset变成了skip。 这个作用就是用于把数据进行分页的 db.comment.find().skip(0).limit(2) db.comment.find().skip(2).limit(2) db.comment.find().skip(4).limit(2) 排序查询
对userid降序排列并对访问量进行升序排列 db.comment.find().sort({userid:-1,likenum:1}) 正则查询
mongodb也支持正则表达式的查询格式为 db.集合.find({字段:/正则表达式/}) 关于正则表达式正则表达式我是觉得很反人类的会用就行了现在也有gpt了也可以让gpt去写正则表达式
比较查询
比较查询就是大于大于等于小于小于等于不等于等于这些是比较常用的 db.集合名称.find({ “field” : { $gt: value }}) // 大于: field value db.集合名称.find({ “field” : { $lt: value }}) // 小于: field value db.集合名称.find({ “field” : { $gte: value }}) // 大于等于: field value db.集合名称.find({ “field” : { $lte: value }}) // 小于等于: field value db.集合名称.find({ “field” : { $ne: value }}) // 不等于: field ! value db.集合名称.find({ “field” : { $eq: value }}) // 等于: field value 比如查询评论点赞数量大于700的记录
这里想说明一下我用的mongodb7版本写不写NumberInt都可以运行前面也是这样的 db.comment.find({likenum:{$gt:NumberInt(700)}}) 包含查询
包含查询就是使用in(在里面),nin(不在里面)
学过python的朋友应该很熟悉吧 查询评论的集合中userid字段包含1003或1004的文档 db.comment.find({userid:{$in:[“1003”,“1004”]}}) 查询评论集合中userid字段不包含1003和1004的文档 db.comment.find({userid:{$nin:[“1003”,“1004”]}}) 条件连接查询
这里就是使用and和or 格式为 $and:[ { },{ },{ } ] $or:[ { },{ },{ } ] 查询评论集合中likenum大于等于700 并且小于2000的文档 db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]}) 查询评论集合中userid为1003或者点赞数小于1000的文档记录 db.comment.find({$or:[ {userid:“1003”} ,{likenum:{$lt:1000} }]}) 索引
索引简单来说就是为了加速查询的你们可以下载一个软件叫everything它的查询速度就不是win能比的。
查看索引 db.comment.getIndexes() 创建索引
按照升序将userid创建为索引 db.comment.createIndex({userid:1}) 复合索引对userid和nickname同时建立复合索引 db.comment.createIndex({userid:1,nickname:-1}) 删除索引 db.comment.dropIndex({userid:1}) db.comment.dropIndex(“userid_1_nickname_-1”) 删除所有的索引注意默认的索引是不会删除的 db.comment.dropIndexes()