MangoDB的增删改查与数据类型
一、数据准备
mangodb的数据库特性:数据库中的库和表中没有数据无则法显示出来,MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象!
MongoDB操作 之 原生ORM,根本不存在SQL语句
1.1 创建一个数据库:
show databases // 查看所有数据库 # 有则进入tab数据库,没有则新增,mangodb数据库,如果数据库中没有数据,则不能看见 数据库及其表 use tab // 切换到tab数据库
db // 指定db为当前数据库tab
二、MongoDB 之 插入数据(insert insertOne insertMany)
insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐!
# insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐 db.stu1.insert({"name":"annie","age":20})
# insertOne: 插入一条数据,官方推荐 db.stu1.insertOne({"name":"annie","age":20})
# insertMany:插入多条数据,无需参数控制,官方推荐 db.stu1.insertOne([{"name":"annie","age":20}, {"name":"anddy","age":13}])
三、数据库的查询命令(find findOne)
# find() 无条件查找:将该表(Collection)中所有的数据一次性返回 db.stu1.find() # 指定查找数据库中name为annie的所有数据 db.stu1.find({"name":"annie"}) # findOne()无条件查找一条数据,默认当前Collection中的第一条数据 db.stu1.findOne() # 指定查找数据库中name为annie的第一条数据 db.stu1.findOne({"name":"annie"})
四、数据库的更新命令(updata updateOne updateMany)
MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert一样,不推荐update的写法
注意的是({"条件"},{"关键字":{"修改内容"}}),其中如果条件为空,那么将会修改Collection中所有的数据
$set:{"name":"WSSB"}解释一下: $set 是update时的关键字,表示我要设置name属性的值为"WSSB"
那么我们之前说过MongoDB的灵活性,没有就代表我要创建,所以说如果该条Documents(记录)没有name属性,他就会自动创建一个name属性并且赋值为"WSSB"
MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert一样,不推荐update的写法 # 把name等于annie的所有数据中name改为21 db.stu1.update({"name":"annie"},{$set:{"age":21}}) # 把age等于19的所有数据中第一条数据的name改为WSSB db.stu1.updateOne({"age":19},{$set:{"name":"WSSB"}}) # 把age等于19的所有数据中的name改为pig_qi db.stu1.updateMany({"age":19},{$set:{"name":"pig_qi"}})
五、数据库的删除命令(remove)
remove({}):无条件删除数据,这里要注意了,这是删除所有数据,清空Collection
# 无条件删除数据,这里要注意了,这是删除所有数据,清空Collection db.stu1.remove({}) # 删除指定数据,这里删除name等于annie的记录 db.stu1.remove({"name":"annie"})
六、MangoDB的数据类型
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类型,时间戳可以秒杀一切时间类型)
6.1 Object ID : 对象类型
"_id" : ObjectId("5b151f8536409809ab2e6b26")
#"5b151f85" 代指的是时间戳,这条数据的产生时间
#"364098" 代指某台机器的机器码,存储这条数据时的机器编号
#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的
#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
#以上四种标识符拼凑成世界上唯一的ObjectID
#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换
#可以得到以上四种信息
#注意:这个类型是不可以被JSON序列化的
# 这是MongoDB生成的类似关系型DB表主键的唯一key,具体由24个字节组成:
0-8字节是时间戳,
9-14字节的机器标识符,表示MongoDB实例所在机器的不同;
15-18字节的进程id,表示相同机器的不同MongoDB进程。
19-24字节是计数器
6.2 String :
UTF-8字符串,记住是UTF-8字符串
6.3 Boolean :
true or false 这里首字母是小写的
6.4 Integer :
整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
6.5 Double :
浮点数 (MongoDB中没有float类型,所有小数都是Double)
6.6 Arrays :
数组或者列表,多个值存储到一个键 (list列表)
{ "_id" : ObjectId("5b163830993ddc4cd4918ead"), "name" : "LuffyCity", "teacher" : [ "DragonFire", "WuSir2B", "Alex AGod" ] }
6.7 Object :
如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
{ "_id" : ObjectId("5b163915993ddc4cd4918eaf"), "name" : "LuffyCity", "course" : { "name" : "Python", "price" : 19800 } }
6.8 Null :
空数据类型 , 一个特殊的概念,None Null
{ "_id" : ObjectId("5b163a0e993ddc4cd4918eb0"), "name" : "LuffyCity", "course" : null }
6.9 Timestamp :时间戳
{ "_id" : ObjectId("5b163bbf993ddc4cd4918eb3"), "name" : "LuffyCity", "date" : 1528183743111 }
6.10 Date :
存储当前日期或时间格式 (我们一般很少使用这个Date类型,因为时间戳可以秒杀一切时间类型)
{ "_id" : ObjectId("5b163ba1993ddc4cd4918eb2"), "name" : "LuffyCity", "date" : ISODate("2018-06-05T15:28:33.705+08:00") }