mongodb小计
发布日期:2022-02-17 04:52:26 浏览次数:18 分类:技术文章

本文共 3394 字,大约阅读时间需要 11 分钟。

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

下面是Sql与mongodb的术语对比

SQL Mongodb
表(Talbe) 集合(Collection)
行(Row) 文档(Document)
列(Col) 字段(Field)
主键(Primary Key) 对象ID(ObjectId)
索引(Index) 索引(Index)
嵌套表(Embeded Table) 嵌入式文档(Embeded Document)
数组(Array) 数组(Array)

 

mongodb将数据存储为一个文档,已键值对的形式存储。

例如

{name:"wang"}

{"name":"wang"}

通过这个我们知道,在向mongodb的同一个表中插入数据的时候,插入的数据字段类型可以不一样,即使是相同的字段数据类型也可以不一样。

1、mongodb的使用

进入mongodb,shell后,使用show databases,可以查看说有的数据库,也可使用show dbs,展示所有的数据库,

1.1、创建数据库

mongodb创建数据库与sql稍有不用,mongodb可通过use dbname来切换和创建数据库,例如:use dalao ,如果大佬数据库存在时,则切换到dalao数据库,若不存在则直接创建dalao数据库

删除数据库:db.dropdatabase()

查看数据库状态:db.stats()

查看版本:db.version()

查看当前数据库连接地址:db.getMongo()

1.2、集合的创建和使用

use dbname,切换到对应的数据库,show collections查看所有的集合。

mongodb可以手动创建集合,也可直接插入数据时自动创建集合。

例如:db.dalaocollection.insert{name:"dage"}若dalaocollection不存在则会创建dalaocollections集合。

创建集合:db.createCollection(name,options)

例如:db.createCollection("dalao")

           db.createCollection("dalao", {capped: true, size: 10})   

           参数capped: 默认值为false表示不设置上限,值为true表示设置上限.

           参数size: 当capped值为true时, 需要指定此参数, 表示上限⼤⼩,单位为字节,当⽂档达到上限时, 会将之前的数据覆盖,                                  最早添加的数据移出, 其余上移, 最后添加在最后一条

删除集合:db.collectionname.drop()

1.3、用户操作

创建用户:db.createUser({user:"laowang", pwd:"123456", roles:[{role:"userAdmin", db:"stu"}]}) 

展示用户:show users

删除用户:db.removeUser("laowang")

2、mongodb的数据类型

  • Object ID: ⽂档ID
  • String: 字符串, 最常⽤, 必须是有效的UTF-8
  • Boolean: 存储⼀个布尔值, true或false
  • Integer: 整数可以是32位或64位, 这取决于服务器
  • Double: 存储浮点值
  • Arrays: 数组或列表, 多个值存储到⼀个键
  • Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
  • Null: 存储Null值
  • Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
  • Date: 存储当前⽇期或时间的UNIX时间格式

创建⽇期语句如下 :参数的格式为YYYY-MM-DD每个⽂档都有⼀个属性, 为_id, 保证每个⽂档的唯⼀性

  • new Date('2017-12-20')

3、插入数据

命令:db.collection.insertOne(),db.collection.insertMang([  ])

  • db.dalao.insertOne({name: "dawang", sex: "男"})
  • db.dalao.insertMany{
  • [   {name:"dawang1", sex:"男”},
  •     {name: "dawang2", sex: "男"}   ]
  • }

db.集合名称.insert(document)插⼊⽂档时, 如果不指定_id参数, MongoDB会为⽂档分配⼀个唯⼀的ObjectId类型的_id

  • db.stu.insert({name:'gj',gender:1})
  • db.stu.insert({_id:"20170101",name:'gj',gender:1})

4、数据查询

命令:db.collectionName.find()

4.1、查询特定的数值:db.collectName.find({key:value, key1:value1})

例如:db.dalao.find({name: "wpf1"},{sex:"1"})

4.2、查询范围值数据:db.collectionName.find({"字段1":{"条件1":"限制范围1"}}, {"字段2":{"条件2":"限制范围2"}})

例如:db.dalao.find({age:{"$gt": 10}},{heigh:{"$lt":190}})

和前面查询特定的数据的方法一样,只不过固定值变成了范围({"$gt":10}代表大于10)。

下面是范围操作符及其意义:

操作符 意义
$gt 大于(great than)
$gte 大于等于(great than equal)
$lt 小于(less than)
$lte 小于等于(less than equal)
$ne 不等于(not equal)

4.3、限制查询返回信息:db.collectionName.find(用于过滤的条件,用于限制的条件)

例如:去除age字段

db.dalao.find({age:{"$gt":20}},{age:0} )  #得到的返回数据中没有age信息

只返回age字段

db.dalao.find({age:{"$gt":20}}, {age: 1})   #得到的返回数据只有age和id信息

_id比较特殊,无论怎样,都要默认返回,如果我们真的不需要,那么必须就要把"_id"设置为0。

4.3、修饰返回结果

得到返回数据的总数

db.collectionName.find().count()

限定返回结果的数量

db.collectionName.find().limit(限制返回的数量)

对结果进行排序

db.collectionName.find().sort({字段名:-1或1})

其中-1位逆序,1为正序

数据去重

db.collectionName.distin({去重的字段:去重的条件})

例如:db.dalao.distin({name:{$nt:{age:10}}})

这句话的意思是将年龄不等于十岁的name去重,返回的是一个数组,里面是去重后的表中name字段的非重复的数据。

 

 

复杂查询等我学会了再补充

5、数据update

语法: db.collectionName.update(<query> ,<update>,{multi: <boolean>})

  • 参数query:查询条件
  • 参数update:更新操作符
  • 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
  • db.stu.update({name:'hr'},{name:'mnc'}) 更新一条,没有更新的字段会丢弃.
  • db.stu.update({name:'hr'},{$set:{name:'hys'}}) 更新一条
  • db.stu.update({},{$set:{gender:0}},{multi:true}) 更新全部

 

 

 

转载地址:https://blog.csdn.net/qq_41429841/article/details/107998735 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android 上传图片 SSM 接收图片
下一篇:redis小计

发表评论

最新留言

很好
[***.229.124.182]2024年04月12日 17时56分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章