开发者社区> 流浪的猪猪> 正文

mongo db

简介: MongoDB 数据类型 ObjectId ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是: 前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时 接下来的 3 个字节是机器标识码 紧接的两个字节由进程 id 组成 PID 最后三个字节是随机数 MongoDB 中存储的文档必须有一个 _id 键。
+关注继续查看

MongoDB 数据类型

image

ObjectId

ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:

  • 前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时
  • 接下来的 3 个字节是机器标识码
  • 紧接的两个字节由进程 id 组成 PID
  • 最后三个字节是随机数
    image

MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象
由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间:

> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")

查询

基本的条件符

db.getCollection('nodes').find({"createTime":ISODate("2019-05-03T21:06:37.000Z")}).pretty()
db.getCollection('nodes').find({"createTime":{$gt:ISODate("2019-05-03T21:06:37.000Z")}}).pretty()

$lt:<
$lte:<=
$gt:>
$gte:>=
$ne:!=

and,or

db.col.find({"likes": {$gt:50}, $or: [{"ipv4Addr":{$gt:'172.16.134.255'},{"ipv4Addr":{$lt:'172.16.134.1'}]}).pretty()
db.getCollection('nodes').find({ $and:[{"ipv4Addr":{$gt:'172.16.134.1'}},{"ipv4Addr":{$lt:'172.16.134.90'}}] }).collation({"locale": "zh", numericOrdering:true}).pretty().count()
db.getCollection('nodes').find({ $and:[{"ipv4Addr":{$gt:'172.16.134.1'}},{"ipv4Addr":{$lt:'172.16.134.90'}}] }).collation({"locale": "zh", numericOrdering:true}).sort({"ipv4Addr":1}).pretty().count()

子文档查询

db.getCollection('nodes').find({"labels.macVendor.value":/ASUSTek COMPUTER INC./} ).count()

正则

db.getCollection('nodes').find({"labels.macVendor.value":/ASUSTek COMPUTER INC./} ).count()

分页: .skip(10).limit(10)

db.getCollection('nodes').find({"labels.macVendor.value":/ASUSTek COMPUTER INC./} ).skip(10).limit(10)

MongoDB 更新文档

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

update

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

如:

db.col.update({'title':'11111'},{$set:{'title':'22222'}},{multi:true})

save

save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)

参数说明:

  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Mongo DB】万字详解,Mongo DB的简介到实战使用(下)
今天主要为大家提供一条龙服务,从Mongo DB的简介到实战使用,使我们面对技术选型的时候可以得心应手。
36 0
【Mongo DB】万字详解,Mongo DB的简介到实战使用(上)
今天主要为大家提供一条龙服务,从Mongo DB的简介到实战使用,使我们面对技术选型的时候可以得心应手。
27 0
MySQL下的DB Link
在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道可以跨实例来进行数据查询,同样的,Mysql自带的FEDERATED引擎完美的帮我们解决了该问题。本篇文章介绍FEDERATED引擎的开启和使用。
50 0
Mybatis中oracle、mysql、db2、sql server的like模糊查询
Mybatis中oracle、mysql、db2、sql server的like模糊查询
231 0
DB2常用命令
DB2常用命令1.打开命令行窗口   #db2cmd 2.打开控制中心   # db2cmd db2cc 3.打开命令编辑器  db2cmd db2ce 操作数据库命令*4.启动数据库实例   #db2start 5.
1858 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
HTAP DB HTAP DB —System : ApsaraDB HBase Phoenix and Spark
立即下载
Greenplum DB 5.0 Roadmap
立即下载
SQL Server 2017
立即下载