开发者社区> 流浪的猪猪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 :可选,抛出异常的级别。

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

相关文章
MySQLdb的安装与使用
一、安装 安装已编译版本(此方法简便快捷): http://www.codegood.com/downloads 根据自己系统下载,双击安装,搞定 然后import MySQLdb,查看是否成功   我的,win7,32位,2.
537 0
DB2中的数据移动
数据移动的作用: 如果要在不同的数据库管理系统之间转移数据,数据移动通常是最实用的一种方法,因为任何一种数据库管理系统都支持常用的几种文件格式,通过这个通用的接口,就很容易实现不同系统间数据的转移。
909 0
MySQL下的DB Link
在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道可以跨实例来进行数据查询,同样的,Mysql自带的FEDERATED引擎完美的帮我们解决了该问题。本篇文章介绍FEDERATED引擎的开启和使用。
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Greenplum DB 5.0 Roadmap
立即下载
MySQL Replication: Latest Developments
立即下载
从华农到MySQL大神
立即下载