当前位置:网站首页>MongoDB的CRUD操作(2)
MongoDB的CRUD操作(2)
2022-07-23 01:16:00 【(illusion)】
文档插入
使用insert() 或 save() 方法向集合中插入文档,语法如下:
db.collection.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)db.comment.insert({"articleid":"100000","content":"今天天气真好,阳光明媚","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null})
comment集合如果不存在,则会隐式创建
mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
插入当前日期使用 new Date()
插入的数据没有指定 _id ,会自动生成主键值
如果某字段没值,可以赋值为null,或不写该字段。

文档中的键/值对是有序的。
文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
MongoDB区分类型和大小写。
MongoDB的文档不能有重复的键。
文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符
文档键命名规范:
- 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
- .和$有特别的意义,只有在特定环境下才能使用。
- 以下划线"_"开头的键是保留的(不是严格要求的)。
批量插入
语法:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
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"},]);

文档的查询
查询所有:
db.comment.find() 或 db.comment.find({})

根据条件查询 : db.comment.find({articleid:"100001"})

查询第一条 : db.comment.findOne({articleid:"100001"})

投影查询:

文档的更新
1.覆盖修改
db.comment.update({_id:"1"},{likenum:NumberInt(1001)})
执行后,除了likenum字段其它字段都会消失

2.局部修改
db.comment.update({_id:"2"},{$set:{likenum:NumberInt(2222)}})

3.批量修改
db.comment.update({userid:"1003"},{$set:{nickname:"王五"}},{multi:true})

4.列值增长
db.comment.update({_id:"3"},{$inc:{linkenum:NumberInt(1)}})

删除文档
删除文档语法 : db.集合名称.remove(条件)
删除所有数据: db.comment.remove({})

文档分页查询
统计查询
db.comment.count() 查询所有数量
db.comment.count({userid:"1003"}) 查询 符合 userid:"1003" 的数量

分页查询
返回指定条数的记录,默认值20
db.comment.find().limit(3)
记录条数。(前N个不要),默认值是0
db.comment.find().skip(3)

排序查询
db.COLLECTION_NAME.find().sort({KEY:1})
db.集合名称.find().sort(排序方式)
sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用 于降序排列。
skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit(),和命令编写顺序无关

正则查询
db.collection.find({field:/正则表达式/})
db.集合.find({字段:/正则表达式/})
db.comment.find({content:/开水/})
db.collection.find({field:/正则表达式/})
db.集合.find({字段:/正则表达式/})

比较查询
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
查询大于700的记录 db.comment.find({likenum:{$gt:NumberInt(700)}})
包含查询
使用$in操作符 查询userid字段包含1003 的数据
db.comment.find({userid:{$in:["1003"]}})
使用$nin操作符 查询userid字段不包含1003 , 1004的数据
db.comment.find({userid:{$nin:["1003","1004"]}})

条件连接查询
如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相 当于SQL的and)
$and:[ { },{ },{ } ]
查询集合中likenum大于等于700 并且小于2000的文档:
db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})
如果两个以上条件之间是或者的关系,我们使用 操作符进行关联,与前面 and的使用方式相同 格式为:
$or:[ { },{ },{ } ]
查询集合中userid为1003,或者likenum小于1000的文档记录
db.comment.find({$or:[ {userid:"1003"} ,{likenum:{$lt:1000} }]})

常用命令
选择切换数据库:use articledb 如果没有则取创建
插入数据:db.comment.insert ({bson数据})
查询所有数据:db.comment.find();
条件查询数据:db.comment.find({条件})
查询符合条件的第一条记录:db.comment.findOne({条件})
查询符合条件的前几条记录:db.comment.find({条件}).limit(条数)
查询符合条件的跳过的记录:db.comment.find({条件}).skip(条数)
修改数据:db.comment.update({条件},{修改后的数据}) 或db.comment.update({条件},{$set:{要修改部分的字段:数据})
修改数据并自增某字段值:db.comment.update({条件},{$inc:{自增的字段:步进值}})
删除数据:db.comment.remove({条件})
统计查询:db.comment.count({条件})
模糊查询:db.comment.find({字段名:/正则表达式/})
条件比较运算:db.comment.find({字段名:{$gt:值}})
包含查询:db.comment.find({字段名:{$in:[值1,值2]}})或db.comment.find({字段名:{$nin:[值1,值2]}})
条件连接查询:db.comment.find({$and:[{条件1},{条件2}]})或db.comment.find({$or:[{条件1},{条件2}]})
边栏推荐
- Talk about HART Protocol
- 认识盒子模型,盒子模型的边框、内外边距、水平布局、垂直布局、设置浮动、处理高度塌陷的基本方法
- 强制打开网页
- 华为应用已经调用了checkAppUpdate接口,为什么应用内不提示版本更新
- 【华为联机对战服务】客户端退出重连或中途进入游戏,新玩家如何补帧?
- 小白股票开户安全吗?网上可以办理吗?
- Event listening and deleting events - event object - default event - cancel bubbling event - event delegation - default trigger
- 【CANN训练营】学习笔记——Diffusion和GAN对比,Dalle2和Parti
- How many of the 50 classic computer network interview questions can you answer? (top)
- 提升从改变开始...
猜你喜欢
随机推荐
transformer汇总
C语言经典练习题(1)——“水仙花数“
QT显示中文乱码
超全PMP备考文档汇总
Advantages of server hosting, server leasing and virtual machine
Pytorch visualization
PMP一手资料、一手资讯获取
php获取证书编号没有serialNumberHex只有serialNumber处理方法
Anti attack based on conjugate gradient method
Is it safe to open an account online? How about Galaxy Securities
【CANN训练营】学习笔记——Diffusion和GAN对比,Dalle2和Parti
[wechat applet] Introduction to development (2)
Online matting and background changing and erasing tools
一文了解微服务低代码实现方式
BGP機房的優點
Vs Code shortcut key settings
35岁程序员,早到的中年危机
In the era of Internet of everything, see how IOT test meets the challenge of "core"
砥砺前行新征程,城链科技狂欢庆典在厦门隆重举行
2000. reverse word prefix


![[try to hack] awvs installation and simple use](/img/58/4259e35a04e9435873ed984f884761.png)







