码迷,mamicode.com
首页 > 数据库 > 详细

mongoDB的ObjectId和查询条件

时间:2020-07-12 22:33:17      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:比较   pid   部分   地方   组成   默认   等于   mamicode   作用   

一、ObjectId

在插入数据时,mongoDB 会自动生成"_id",默认生成的"_id"属于 ObjectId 对象,作用类似于身份证号用来标识每一条数据。

技术图片

 ObjectId 是一个12字节(16进制) BSON 类型数据,格式分四部分组成4|3|2|3:

  • 4个字节时间戳
  • 3个字节机器标识码
  • 2个字节进程id(PID)
  • 3个字节随机数
例如:ObjectId("5f09c1779a5b2a836d9000b3")    //5f09c177 9a5b2a 836d 9000b3
5f09c177         //时间戳
9a5b2a           //机器标识码
836d             //进程id
9000b3           //随机数(自动增加的计数器)

因为 ObjectId 中存储了时间戳,所以可以直接从中获取时间信息:

ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp()     //获取时间信息

技术图片

 也可以再进行获取年月日时分秒信息,如下:

技术图片

ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getFullYear()     //年
ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getMonth() //月,注意这里的月份是从0开始的(0-11),所以实际使用时可能需要加1
ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getDate() //日
ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getHours() //时,注意这里的加了8
ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getMinutes() //分
ObjectId("5f09c1779a5b2a836d9000b3").getTimestamp().getSeconds() //秒

二、查询条件(query)

查询条件在很多地方都可以用到,比如 find() | findOne() | update() | remove | aggregate() 里的 $match 等

1. 比较大小:

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte
  • (=) 等于 - $eq
  • (!=) 不等于 - &ne

例:

db.grades.find({English:{$gt:90}})      //查询英语成绩大于90的数据

技术图片

 2. and 和 or

db.grades.find({$and:[{English:{$gt:60}},{name:"Bob"}]})   //and 条件并列查询

技术图片

db.grades.find({$or:[{English:{$gt:60}},{name:"Bob"}]})   //or 条件或查询

技术图片

 3. 正则查询(Regex)

 db.grades.find({name:/J/})   //模糊查询名字中含字母"J"的数据

技术图片

 

mongoDB的ObjectId和查询条件

标签:比较   pid   部分   地方   组成   默认   等于   mamicode   作用   

原文地址:https://www.cnblogs.com/yh2020/p/13289995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!