【博学谷IT技术支持】
数据库连接
后端数据库连接语法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
- mongodb:// 是固定搭配,
- 后边是可选参数用户名加密码,
- host是要连接服务器的地址,
- portx是指定的端口,默认27017
- database如果指定username:password@,连接并验证登录指定数据库。若不指定,默认打开 test 数据库。
- 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)
参数有三:
- Document要写入的文档。
- writeConcern写入策略,默认为 1,即要求确认写操作,0 是不要求。
- 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>
}
)
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如\(,\)inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- 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)
- query :可选,使用查询操作符指定查询条件
- 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