首页 > 数据库 >博学谷学习记录】超强总结,用心分享 | mongodb基础用法

博学谷学习记录】超强总结,用心分享 | mongodb基础用法

时间:2023-06-01 09:55:45浏览次数:72  
标签:img mongodb 博学 db k3u1fbpfcp demo1 超强 防盗链 图片

【博学谷IT技术支持】

数据库连接

后端数据库连接语法:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  1. mongodb:// 是固定搭配,
  2. 后边是可选参数用户名加密码,
  3. host是要连接服务器的地址,
  4. portx是指定的端口,默认27017
  5. database如果指定username:password@,连接并验证登录指定数据库。若不指定,默认打开 test 数据库。
  6. options是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

例子如:
使用用户名niu,密码root登录localhost的project数据库。

mongodb://niu:root@localhost/project

创建数据库

创建数据库

use project2
db

效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQEN4y3a-1659690393104)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/12246e71795d4739962f58eb94f1d67f~tplv-k3u1fbpfcp-watermark.image)]

显示所有数据库

show dbs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0zSqrnJ0-1659690393105)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e2ec52caaae044e58a6499d14379b61d~tplv-k3u1fbpfcp-watermark.image)]

往project2中插入一条数据

db.project2.insert({"name":"11111"})
show dbs

结果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XR8SN7my-1659690393106)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b8499e1e9ae34f7b898ded8a5ef61d14~tplv-k3u1fbpfcp-watermark.image)]

删除数据库

db.dropDatabase()
show dbs

结果如下,已删除project2数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZuQi7jC-1659690393107)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1ed0961a0f6044d98bbcff2d5974961f~tplv-k3u1fbpfcp-watermark.image)]

创建集合

use test
db.createCollection("project2")

创建了test数据库,test数据库创建了project2集合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zUCwUVfI-1659690393108)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75018f7a0bc944f68e29ff2b204a6728~tplv-k3u1fbpfcp-watermark.image)]

删除集合

db.project2.drop()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PnqU5mSn-1659690393109)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6c0490a58fa49d084d2459a38d18278~tplv-k3u1fbpfcp-watermark.image)]

插入文档

db.COLLECTION_NAME.insertOne(document)
db.COLLECTION_NAME.replaceOne(document)

参数有三:

  1. Document要写入的文档。
  2. writeConcern写入策略,默认为 1,即要求确认写操作,0 是不要求。
  3. ordered指定是否按顺序写入,默认 true,按顺序写入。
db.demo1.insertOne({title: 'title', 
    description: 'description',
    arr: ['1', '2', '3'],
})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hIGp7COP-1659690393110)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/197465bb101741bf9e55709d9115213e~tplv-k3u1fbpfcp-watermark.image)]

更新文档

MongoDB 使用 update() 和 save() 方法来更新集合中的文档

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
  1. query : update的查询条件,类似sql update查询内where后面的。
  2. update : update的对象和一些更新的操作符(如\(,\)inc...)等,也可以理解为sql update查询内set后面的
  3. upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  4. multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  5. writeConcern :可选,抛出异常的级别。
db.demo1.update({'title':'title'},{$set:{'title':'title-Update'}},{multi:true})
db.demo1.find().pretty()

结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2gNy93Xg-1659690393110)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eb0fb11d329447fc80654190b72f2ecc~tplv-k3u1fbpfcp-watermark.image)]

删除文档

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l5di2agw-1659690393111)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9d90b9e8fcb4459993f4c34bb0271095~tplv-k3u1fbpfcp-watermark.image)]

db.demo1.remove({'title':'title'},1)

db.demo1.find()

从三条数据,删为两条

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qo3kJ3Mf-1659690393112)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/feb0e5e1be6d4a2195494aa1267995b2~tplv-k3u1fbpfcp-watermark.image)]

查询文档

db.collection.find(query, projection)
  1. query :可选,使用查询操作符指定查询条件
  2. projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
db.demo1.find().pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JZot4Il9-1659690393113)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ed708a4d68c44fda0150ea4932cb90b~tplv-k3u1fbpfcp-watermark.image)]

and条件查询

db.col.find({key1:value1, key2:value2}).pretty()
db.demo1.find({'title':'title3','description':'description'}).pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkxoNo0O-1659690393113)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/96f38993a9a24985b366289eb6b35e53~tplv-k3u1fbpfcp-watermark.image)]

or条件

db.demo1.find({$or:[{"title":"title2"},{"title": "title3"}]}).pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DlzKVl0-1659690393114)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cbc0d707eea74511bd5f6ec92bcac12a~tplv-k3u1fbpfcp-watermark.image)]

条件操作符

先插入三条数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9INLTFLr-1659690393115)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e199ac7ee55f4b08ae2c6a738c2f15c0~tplv-k3u1fbpfcp-watermark.image)]

大于>

db.demo1.find({likes : {$gt : 1}})

结果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PtcILkNv-1659690393115)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6cf7a05222de40d98207ff008b74bd16~tplv-k3u1fbpfcp-watermark.image)]

大于等于>=

db.demo1.find({likes : {$gte : 1}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcBDmwLl-1659690393116)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/75a472e881934972b02a731d1d3528a5~tplv-k3u1fbpfcp-watermark.image)]

小于<

db.demo1.find({likes : {$lt : 2}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ry5ES9N-1659690393117)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e70f354718304caa8eba77eb3cbba91c~tplv-k3u1fbpfcp-watermark.image)]

小于等于<=

db.demo1.find({likes : {$lte : 2}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i4IsuMUt-1659690393118)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7bbe5876ffe7442fac1b8745e3be110b~tplv-k3u1fbpfcp-watermark.image)]

取中间值

db.demo1.find({likes : {$lt :3, $gt : 1}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IqXbeQO6-1659690393118)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/11ac9720355549e1bf7529ce01a2e4bf~tplv-k3u1fbpfcp-watermark.image)]

$type 操作符

查询数据类型
常见的Double,String,Object,Array,Boolean,Date等等

db.demo1.find({"likes" : {$type : 'number'}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pJZDN0lz-1659690393119)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d3b466f1884467294c88d67fb12fe22~tplv-k3u1fbpfcp-watermark.image)]

Limit与Skip方法

limit查询条数

db.demo1.find().limit(2)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bsO7tH5A-1659690393120)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dec2373aef314e31a3799eb246cd1345~tplv-k3u1fbpfcp-watermark.image)]

skip跳过多少条

db.demo1.find().limit(2).skip(1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GBWKl8m-1659690393121)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/01fa5c0b48d942f48b206e8f36072f24~tplv-k3u1fbpfcp-watermark.image)]

排序

1 为升序排列,而 -1 是用于降序排列。

db.demo1.find().sort({likes:1})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kG9BLtxK-1659690393121)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7a0dceece1d1482eb1ed333b68d73adc~tplv-k3u1fbpfcp-watermark.image)]

db.demo1.find().sort({likes:-1})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDgTogNU-1659690393122)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6f3d49bfa3f74c138a4899ef018f7396~tplv-k3u1fbpfcp-watermark.image)]

索引

db.collection.createIndex(keys, options)

语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

db.demo1.createIndex({likes:1})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObW0rd0z-1659690393123)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5e5b479506cd4562a39a6297bae2a5c5~tplv-k3u1fbpfcp-watermark.image)]

聚合

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
db.demo1.aggregate([{$group : {_id : "$tags", num_tutorial : {$sum : 1}}}])

计算tags有几个相同的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frok1zcf-1659690393123)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d4bc51b820d3477d8e0392e922f2adc2~tplv-k3u1fbpfcp-watermark.image)]

$sum 计算总和。

表达式 描述 实例

$sum 计算总和。

db.demo1.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

$avg 计算平均值

db.demo1.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])

$min 获取集合中所有文档对应值得最小值

db.demo1.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])

$max 获取集合中所有文档对应值得最大值。

db.demo1.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

$push 在结果文档中插入值到一个数组中。

db.demo1.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])

$addToSet 在结果文档中插入值到一个数组中,但不创建副本。

db.demo1.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])

$first 根据资源文档的排序获取第一个文档数据。

db.demo1.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

$last 根据资源文档的排序获取最后一个文档数据

db.demo1.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

标签:img,mongodb,博学,db,k3u1fbpfcp,demo1,超强,防盗链,图片
From: https://www.cnblogs.com/neilniu/p/17448074.html

相关文章

  • mongodb安装
    一、YUM安装MongoDB1、添加一个yum源创建一个/etc/yum.repos.d/mongodb-org-5.0.repo文件[mongodb-org-5.0]name=MongoDBRepositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.or......
  • 【博学谷学习记录】超强总结,用心分享 | spark知识点总结2
    【博学谷IT技术支持】Action动作算子reduce:通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的collect:在驱动程序中,以数组的形式返回数据集的所有元素count:返回RDD的元素个数first:返回RDD的第一个元素(类似于take(1))take:返回一个由数据集的前n个元......
  • mongodb压缩——snappy、zlib块压缩,btree索引前缀压缩
    MongoDB3.0WiredTigerCompressionandPerformanceOneofthemostexcitingdevelopmentsoverthelifetimeofMongoDBmustbetheinclusionoftheWiredTigerstorageengineinMongoDB3.0.Itsverydesignandcorearchitecturearelegionsaheadofthecurr......
  • node连接mongodb
    主要试用了两个库:mongodb、mongoose由于服务器使用的是比较老版本的mongodb,如果使用比较新的客户端,编译时会出现问题:Serveratxxxx:27017reportsmaximumwireversion4,butthisversionoftheNode.jsDriverrequiresatleast6(MongoDB3.6)终级解决方案:去掉类型constm......
  • MongoDB C++ gridfs worked example
    使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html#include<mongoc.h>#include<stdio.h>#include<stdlib.h>#include<fcntl.h>classMongoGridFS{public:MongoGridFS(constchar*db);~MongoGridFS();......
  • mongodb c++ driver安装踩坑记
     安装教程:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/(1)“initializer_list”filenotfoundhttp://stackoverflow.com/questions/19493671/initializer-list-no-such-file-or-directorySinceyouareusing GCC-4.8 andyourproblemisthatyoud......
  • MongoDB学习笔记:配置文件
    本文更新于2023-05-11。使用MongoDB6.0.4。官方文档:https://www.mongodb.com/docs/manual/reference/configuration-options/Linux下配置文件为/etc/mongod.conf。#后面的内容作为注释忽略。大多数参数与mongod的命令行参数对应,如命令行参数为不需指定值的开关则设置为true或f......
  • Spider理论系列--MongoDB(二)
    六、INSERT使用insert db.集合名.insert(文档)#如果是添加数据建议使用insert插入多条数据: db.集合名.insert([文档])#注意一定要加[]否则可能只会把第一条文档插入进去db.user.insert({'name':'lisi','age':20})db.user.insert([{'name':'lisi','age':......
  • < Python全景系列-8 > Python超薄感知,超强保护:异常处理的绝佳实践
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。欢迎来到系列第八篇,异常处理的深入探讨。本文......
  • < Python全景系列-8 > Python超薄感知,超强保护:异常处理的绝佳实践
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。**欢迎来到系列第八篇,异常处理的深入探讨。......