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")
}

 

posted @ 2019-07-17 22:32  Amorphous  阅读(500)  评论(0编辑  收藏  举报