Mongodb总结

本文详细介绍了MongoDB的基本操作,包括展示数据库、集合和文档,数据类型的使用,以及插入、查询、更新、删除数据的方法。此外,还涵盖了比较运算符、正则表达式、投影、排序、统计和去重等高级查询技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mongodb是一种由c++语言编写,一个基于分布式文件存储的开源数据库系统
展示数据库:show dbs
展示文档:show table
展示集合:show collections
使用数据库:use 数据库名
删除数据库:db.dropDatebase()
创建集合:db.createCollection(集合名)
限制集合大小,后面学会插入语句后可以查看效果
参数capped:默认值为false表示不设置上限,值为true表示设置上限
参数size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节
db.createCollection(“sub”, { capped : true, size : 10 } )
展示集合:show collections
删除集合:db.集合名.drop()

数据类型
下表为MongoDB中常用的几种数据类型:
Object ID:文档ID
String:字符串,最常用,必须是有效的UTF-8
Boolean:存储一个布尔值,true或false
Integer:整数可以是32位或64位,这取决于服务器
Double:存储浮点值
Arrays:数组或列表,多个值存储到一个键
Object:用于嵌入式的文档,即一个值为一个文档
Null:存储Null值
Timestamp:时间戳
Date:存储当前日期或时间的UNIX时间格式
object id
每个文档都有一个属性,为_id,保证每个文档的唯一性
可以自己去设置_id插入文档
如果没有提供,那么MongoDB为每个文档提供了一个独特的_id,类型为objectID
objectID是一个12字节的十六进制数
前4个字节为当前时间戳
接下来3个字节的机器ID
接下来的2个字节中MongoDB的服务进程id
最后3个字节是简单的增量值
集合插入:db.集合名.insert(document)
  Db.stu.insert({name:’tom’,age:12})
简单查询:db.集合名.find()
更新数据:db.集合名.update({查询条件},{更新的值},{multic=true})[参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新]
数据保存:db.集合名.save(document)
db.stu.save({_id:’20160102’,’name’:’yk’,gender:1})
数据删除:db,集合名.remove({条件},{justOne:true}[参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条]
findOne()查询:db.集合名.findOne({条件文档})
方法pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()
比较运算符:
等于,默认是等于判断,没有运算符
小于ltlte
大于gtgte
不等于$ne

db.stu.find({age:{$gte:18}})
逻辑运算符(默认是逻辑与):
db.stu.find({age:{$gte:18},gender:1})
db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})
db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:'gj'})

范围运算符:
使用”in""nin” 判断是否在某个范围内

db.stu.find({age:{$in:[18,28]}})

支持正则表达式:
使用//或$regex编写正则表达式

例:查询姓黄的学生
    db.stu.find({name:/^黄/})
       db.stu.find({name:{$regex:'^黄'}}})

自定义查询
使用$where后面写一个函数,返回满足条件的数据
例7:查询年龄大于30的学生

db.stu.find({$where:function(){return this.age>20}})

投影:
在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可
语法:
参数为字段与值,值为1表示显示,值为0不显示
db.集合名称.find({},{字段名称:1,…})
对于需要显示的字段,设置为1即可,不设置即为不显示
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

例1:  db.stu.find({},{name:1,gender:1})
例2:  db.stu.find({},{_id:0,name:1,gender:1})

排序
方法sort(),用于对结果集进行排序
语法: db.集合名称.find().sort({字段:1,…})
参数1为升序排列
参数-1为降序排列
例1:根据性别降序,再根据年龄升序
  db.stu.find().sort({gender:-1,age:1})
统计个数
方法count()用于统计结果集中文档条数
语法: db.集合名称.find({条件}).count()

消除重复
方法distinct()对数据进行去重
语法: db.集合名称.distinct(‘去重字段’,{条件})

1:查找年龄大于18的性别(去重)
   db.stu.distinct('gender',{age:{$gt:18}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值