mongo db

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB 数据类型ObjectIdObjectId 类似唯一主键,可以很快的去生成和排序,包含 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 :可选,抛出异常的级别。
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
存储 Oracle 关系型数据库
【数据库-DB2】深入了解DB2 reorg
本文介绍了DB2数据库中reorg操作的重要性,旨在通过重组表数据来消除数据碎片、压缩信息并提高数据访问速度。reorg操作能够根据索引关键字重新排序数据,减少查询I/O次数,提升查询性能。文章详细讲解了reorg的操作步骤、适用场景及注意事项,强调了在执行reorg前后更新统计信息的必要性。
44 2
|
7月前
|
存储 NoSQL 关系型数据库
Mongo DB 安装及基础操作
MongoDB是一种开源的、基于文档的NoSQL数据库管理系统。它是由10gen(现为MongoDB Inc.)开发和维护的。MongoDB的设计目标是提供灵活的、可扩展的数据存储解决方案,适用于各种类型的应用程序。
300 2
|
SQL 存储 JSON
【Mongo DB】万字详解,Mongo DB的简介到实战使用(上)
今天主要为大家提供一条龙服务,从Mongo DB的简介到实战使用,使我们面对技术选型的时候可以得心应手。
|
SQL NoSQL 算法
【Mongo DB】万字详解,Mongo DB的简介到实战使用(下)
今天主要为大家提供一条龙服务,从Mongo DB的简介到实战使用,使我们面对技术选型的时候可以得心应手。
|
SQL 关系型数据库 数据库
|
SQL Oracle 关系型数据库
MySQL下的DB Link
在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道可以跨实例来进行数据查询,同样的,Mysql自带的FEDERATED引擎完美的帮我们解决了该问题。本篇文章介绍FEDERATED引擎的开启和使用。
283 0
|
关系型数据库 数据库连接 数据库
DB2常用命令
DB2常用命令1.打开命令行窗口   #db2cmd 2.打开控制中心   # db2cmd db2cc 3.打开命令编辑器  db2cmd db2ce 操作数据库命令*4.启动数据库实例   #db2start 5.
2113 0
|
关系型数据库 MySQL