提示:最近公司需要使用mangodb;于是需要记录下常用的操作。
文章目录
前言
- 众所周知、monggoDB是非关系型数据库;那么在进行增加操作时候;表(在这里面称为集合)中字段(这里称为列)的格式就显得不是特别重要了。;
保存的数据类型
Object ID :Documents 自生成的 _id
String: 字符串,必须是utf-8
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
增删改查
首先是增加语句
增加一条文档insertOne
db.getCollection('test_data_1').insertOne(
{
"name":8888,
"address":"changsha"
}
)
增加多条文档insertMany
db.getCollection('test_data_1').insertMany([
{
"name":"名字1",
},
{
"name":"名字2",
},
{
"address":"湖南"
},
]
)
对比两种插入
插入次数考虑:插入次数肯定是insertMany性能更优,**但是:**仅仅是当在插入相同大小的数据时,姓名明显会好;
是否使用分布式的情况:但调用者和数据库不在同一台机器,数据在网络传输的过程中会添加其他的报文;很可能将I/O一下子沾满;且若服务器突然停电,则很不安全;
查找数据
查找所有数据
db.getCollection('test_data_1').find({
})
根据条件查找
db.getCollection('test_data_1').find({
"字段1":"固定值1","字段2":"固定值2"})
根据范围查找
- 首先了解操作符的含义
-
- 语句demo 查找集合中age字段大于10的文档
db.getCollection('test_data_1').find({
"age":"$gt":10"})
返回限定字段
- 在限定的{}外面再加上需要显示的字段是否需要的表示 1代表需要,0代表不需要;
- 默认 id都是会被返回的,如果真的不需要就把id设为0
db.getCollection('test_data_1').find({
{
"age":"$gt":"10"},{
"age":"1"}})
对返回的结果进行加工(返回检索的数据个数、返回限定数量的文档个数、对返回结果得到按设定字段大小排序后的文档)、对返回值进行去重;
对返回值进行去重:这个去重是对返回值去重, 数据库数据并没改变;
返回值是数组
> db.comments.save({
"user": {
"points": 25}})
> db.comments.save({
"user": {
"points": 31}})
> db.comments.save({
"user": {
"points": 25}})
> db.comments.distinct("user.points");
[ 25, 31 ]
db.getCollection('test_data_1').distinct("name",{
"age":{
"$ne":10}})
返回年龄不等于10 名字不同的人名
返回检索的数据个数
db.getCollection('集合名字').find({
}).count()
返回限定数量的文档个数
db.getCollection('集合名字').find({
}).limit(num)
对返回结果得到按设定字段大小排序后的文档
1是升序、2是逆序
db.getCollection('集合名字').find({
}).sort{
"字段名":-1或者1}
对数据进行修改(Updata)
修改数据操作需经过查找后才能执行;
updateOne:只更新第一条符合条件的数据
updateMany:更新所有符合条件的数据
db.getCollection('集合名字').updateMany()
// 下面是查询条件
{
"字段名1":"查找条件1","字段名2":"查找条件2"
},
// 进行修改
{
"$set":{
"字段名":"新的数据","字段名":"新的数据"}
}
若"$set"中字段名以前不存在,则会对该文档进行添加此字段以及赋值
删除数据
删除同样存在两种删除:
deleteOne:删除出现的第一个文档
deleteMany:删除出现的所有文档
db.getCollection("集合名").deleteMany{
// 删除的条件
{
"字段名1":"值","字段名2":"值2"
}
}
可视化数据
我们可以使用Robo3T数据库可视化工具查看数据变化
当分别用insertone插入两组文档时结果如下
文档1:
{
"name":"this is a name",
"age":12
}
文档2:
{
"name":8888,
"address":"changsha"
}
我们可以看到,集合中可以插入不同列表类型的数据。
在Robo3T数据库可视化工具中次集合的数据记录如图所示:
本篇总结参考的博客和相关资料很少;如果有有错误还请指正!万分感谢!;也欢迎大家多多交流