创建集合
use person //创建数据库或进入数据库
db.createCollection(table_name)
主键

插入数据时会自动生成主键,保证每条数据唯一性

  1. 生成对象主键
> ObjectId()
ObjectId("6163fb2ffaca91ed57d6c202")

2.查询ObjectId的创建时间

> ObjectId("6163fb2ffaca91ed57d6c202").getTimestamp()
ISODate("2021-10-11T08:51:59Z")

3.ObjectId类型
ObjectId类型是一个12个字节字符串
6163fb2f - faca9 1 - ed57 - d6c202

  • 4字节是存储这条数据的时间戳
  • 3字节是存储这条数据电脑的标识符
  • 2字节是存储这条数据的MongoDB进程id
  • 3字节是计数器
    4.主键值为什么不是自增长
    因为MongoDB是支持横向扩展的数据库,分布式数据库
    a)横向扩展是指增加数据库服务器的台数
    b)纵向扩展是指增加数据库服务器的配置

:除了数组类型,其它类型数据都可作为主键
db.person.insert({_id:1})
db.person.insert({_id:”2”})

5.5)复合主键
可以使用文档作为文档主键
db.test.insert(
{
_id:{accountNo:”001”,type:”savings”},
name:”irene”,
balance:80
}
)

注:主键是唯一的,相同的文档主键在次插入会报错,但文档中的字段顺序不同则插入成功