MongoDB每个集合都会有一个”_id” 列,并作为集合的主键。
在对集合插入文档时,可以指定 _id 的键值,也可以不指定。 在没有指定的情况下,默认会自动将ObjectId类型的值记入。
> db.dave.insert({"_id":"1","name":"dave"})
WriteResult({ "nInserted" : 1 })
> db.dave.find()
{ "_id" : "1", "name" : "dave" }
>
> db.website.insert({"name":"cndba","url":"https://www.cndba.cn"})
WriteResult({ "nInserted" : 1 })
> db.website.find()
{ "_id" : ObjectId("6268f300c8ab12bc7b3c2fde"), "name" : "cndba", "url" : "https://www.cndba.cn" }
{ "_id" : ObjectId("626902e8c8ab12bc7b3c2fdf"), "name" : "cndba", "url" : "https://www.cndba.cn" }
>
> db.website.getIndexes()
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
>
ObjectId是由12个字节组成的字符串,每个字节是两位十六进制的数字,所以ObjectId是一个24位长度的字符长。
ObjectId的12个字节含义如下:
4个字节 | 3个字节 | 2个字节 | 3个字节
从前往后的含义依次是:
4个字节:服务器的时间戳,单位是秒
3个字节:Mongodb所在机器的机器识别码
2个字节:表示生成该文档的进程ID
3个字节:随机数
从ObjectId中获取操作时间:
> ObjectId("6268f300c8ab12bc7b3c2fde").getTimestamp().toLocaleString();
Wed Apr 27 15:38:40 2022
将ObjectId转换为String的查询-
> ObjectId("6268f300c8ab12bc7b3c2fde").toString();
ObjectId("6268f300c8ab12bc7b3c2fde")
> typeof ObjectId("6268f300c8ab12bc7b3c2fde").toString();
string
>
版权声明:本文为博主原创文章,未经博主允许不得转载。