广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >MongoDB 常用的数据类型和基本操作
  • 210
分享到

MongoDB 常用的数据类型和基本操作

2024-04-02 19:04:59 210人浏览 独家记忆
摘要

目录NO.1 mongoDB的常用数据类型1、null2、bool3、整数4、字符串5、对象id6、日期类型7、数组8、内嵌文档9、代码NO.2 集合文档的基本操作集合相关操作1、查

NO.1 MonGoDB的常用数据类型

    MongoDB中的文档类似JSON,我们知道,在json中,最常用的数据类型有null、bool、数组、字符串、数据、json对象等等。相对比较少,比如对于时间类型的数据,json是无法表示的,而MongoDB中对json进行了简单的优化,像json,但是又不是json。下面我们慢慢说

     MongoDB的常用数据类型和Mysql比较像,你可以对比着看。它的常用数据类型有:

1、null

用于表示空值或者不存在的字段

{"x":null}

2、bool

这个容易理解,true or false

{"x":true}

3、整数

在MongoDB自带的shell中不可用,shell中的需要使用函数来表示整数,如下:

{"x":NumberInt("3")}

如果我们写成

{"x":3}

这里的3会被表示成double。

4、字符串

最常用的数据类型

{"x":"string"}

5、对象id

对象id是12字节的唯一ID

{"x":ObjectId()}

在MongoDB的数据记录里面,也就是文档里面,必须有一个_id键,这个_id键你可以简单理解为唯一标识,类似mysql中的自增主键,但是它一般不设置成自增的,因为在分布式环境中,同步自动增加主键值既费时又费力,MongoDB为了保证分布式场景下的性能,通过自身生成方式来产生_id,_id的类型,称之为ObjectId类型。

该类型使用12字节的存储空间,每个字节里面是2位16进制的数字,是一个24位的字符串。这12个字节的生成方式如下:

0、1、2、3位是时间戳,提供秒级别唯一性

4、5、6位是机器的唯一标识符,提供机器级别唯一性

7、8位是当前生成ObjectId的进程标识符,保证不同进程的唯一性

9、10、11位是一个计数器,保证同一秒相同进程产生的ObjectId的唯一性。

6、日期类型

日期类型存储的是从标准纪元开始的毫秒数,不存储时区。

{"x":new Data()}

示例如下:


> db.num.insert({"age": new Date()})
WriteResult({ "nInserted" : 1 })
> db.num.find()
{ "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 }
{ "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 }
{ "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 }
{ "_id" : ObjectId("5f9838d2f24f04e23fb6387a"), "age" : ISODate("2020-10-27T15:12:18.739Z") }

7、数组

值的集合或者列表可以表示成数组

{"x":["a","b","c"]}

8、内嵌文档

文档可以包含别的文档

{"x":{"foo":"bar"}}

9、代码

文档中可以包含javascript代码

{"x":function(){}}

NO.2 集合文档的基本操作

     这块儿可能是比较关键的部分了,在Mysql中,增删改查是最最基础的功能,在MongoDB中,这些技能也是必备的。

集合相关操作

1、查询集合

查看当前数据库下面的集合,可以使用show collections命令。

2、创建集合

在MongoDB中,不需要单独创建集合,一般情况下,只要我们直接将文档插入到集合中,就可以看到集合自动生成了,举个例子:


> show collections # 查看集合
num
person

> db.aaa.insert({"name":"yeyz"})
WriteResult({ "nInserted" : 1 })

> show collections #查看集合,发现aaa这个集合生成了
aaa
num
person

3、删除集合


> show collections
aaa
num
person
> 
> db.aaa.drop() #删除集合
true
> show collections
num
person

关于集合,最常见的操作就是上面几个。查询集合、创建集合、删除集合。

再来看文档相关的操作:

1、插入文档

上面的例子中,我们使用insert操作已经演示了插入文档的方法。我把两种常见的方法写在一起:


方法一:直接插入文档
> db.aaa.insert({"name":"yeyz"})
WriteResult({ "nInserted" : 1 })

方法二:将文档保存在变量里面,插入变量
> record={"name":"zhangsan"}
{ "name" : "zhangsan" }
> db.aaa.insert(record)
WriteResult({ "nInserted" : 1 })

查找集合所有内容
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

2、查询文档

查询文档的方法比较多,展开来说可以说很久,就像我们的SQL语法一样,有各种各样的写法,这里先说下最简单的,查找所有对象、查找一条对象,或者查找某一条对象的方法。看例子:


#查找所有记录
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
> 
>
#查找一条记录
> db.aaa.findOne()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

#带过滤条件的,查找name=zhangsan的记录
> db.aaa.find({"name":"zhangsan"})
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

3、删除记录

删除记录的方法也比较简单,如下:


#查找所有记录
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

#删除name=zhangsan的记录
> db.aaa.remove({"name":"zhangsan"})
WriteResult({ "nRemoved" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

# 仅剩name=yeyz的一条记录
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

如果不想要过滤条件,可以直接使用:

db.aaa.remove()来删除所有的记录。

4、更新记录

更新记录,在MongoDB中有些麻烦,例如下面的场景


#查找所有记录
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
{ "_id" : ObjectId("5f983D76f24f04e23fb6387e"), "name" : "zhangsan" }

#用一个变量表示要修改的文档
> record={"name" : "yeyz","age":18}
{ "name" : "yeyz", "age" : 18 }

#用刚才的变量替换匹配条件的结果
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 18 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

# 修改变量的age属性
> record.age=20
20

#再次替换原来的文档
> db.aaa.update({"name" : "yeyz"},record)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.aaa.find()
{ "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 20 }
{ "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

上面的方法在条件唯一匹配的时候不会有问题,但是在条件不唯一匹配的场景下,可能存在一些隐患,下次我们再分享,今天就先这么点儿吧。

每天的内容不多,慢慢来,一点一点搞懂它。。。晚安喽。

以上就是MongoDB 常用的数据类型和基本操作的详细内容,更多关于MongoDB 数据类型和基本操作的资料请关注编程网其它相关文章!

--结束END--

本文标题: MongoDB 常用的数据类型和基本操作

本文链接: https://www.lsjlt.com/news/122398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB 常用的数据类型和基本操作
    目录NO.1 MongoDB的常用数据类型1、null2、bool3、整数4、字符串5、对象id6、日期类型7、数组8、内嵌文档9、代码NO.2 集合文档的基本操作集合相关操作1、查...
    99+
    2022-11-11
  • Redis基本数据类型String常用操作命令
    目录Redis数据类型String操作命令一、append 追加字符串二、strlen 获取key 字符串长度三、自增、自减四、字符串range五、替换字符串六、设置值及其过期时间s...
    99+
    2022-11-13
  • Redis基本数据类型Set常用操作命令
    目录Redis基本数据类型Set常用操作一、sadd 添加一个、多个元素二、smembers 查看集合三、scard 元素数量四、srem 移除一个、多个元素五、srandmembe...
    99+
    2022-11-13
  • Redis基本数据类型List常用操作命令
    目录Redis数据类型List操作一、push 插入元素1. lpush,在头部插入2. rpush,在尾部插入二、range 通过区间获取元素三、pop 移除元素1. lpop 左...
    99+
    2022-11-13
  • [MySQL]基本数据类型及表的基本操作
    哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库常用的数据类型,数据表的基本操作:创建、删除、修改表,针对修改表的结构进行了讲解,随后是如何向数据表中添加数据,浅浅的提了一下表中数据的查询,更多相关...
    99+
    2023-08-31
    mysql 数据库 服务器 Powered by 金山文档
  • mongoDB数据库基本操作
    mongoDB中聚集集合(collection/coll)相当于mysql中的表文档相当于mysql中的每一行数据常用命令 1.获得帮助命令db.help() db.表名.help() db.表名...
    99+
    2022-10-18
  • Redis基本数据类型Zset有序集合常用操作
    目录Redis数据类型Zset有序集合一、zadd二、zrange三、zrevrange四、zrangebyscore五、 zrem六、zcard七、zcountRedis数据类型Z...
    99+
    2022-11-13
  • Redis基本数据类型哈希Hash常用操作命令
    目录Redis数据类型Hash常用操作一、hset二、hget三、hmset四、hmget五、hgetall六、hdel七、hlen八、hexists九、hkeys十、hvals十一...
    99+
    2022-11-13
  • MongoDB常用的基本操作命令
    这篇文章主要讲解了“MongoDB常用的基本操作命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB常用的基本操作命令”吧! ...
    99+
    2022-10-18
  • Redis基本数据类型String常用操作命令是什么
    这篇文章主要讲解了“Redis基本数据类型String常用操作命令是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis基本数据类型String常用操作命令是什么”吧!Redis数据...
    99+
    2023-06-30
  • Redis基本数据类型List常用操作命令是什么
    这篇文章主要讲解了“Redis基本数据类型List常用操作命令是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis基本数据类型List常用操作命令是什么”吧!Redis数据类型Li...
    99+
    2023-06-30
  • Python数据类型和常用操作
    目录一、数值二、字符串三、列表四、元组五、字典六、集合一、数值 数值数据类型用于存储数值,数据类型不可改变,改变会分配一个新的对象,在Python中,“与或非&rdquo...
    99+
    2022-11-10
  • Redis基本数据类型哈希Hash常用操作实例分析
    这篇文章主要介绍了Redis基本数据类型哈希Hash常用操作实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Redis基本数据类型哈希Hash常用操作实例分析文章都会有所收获,下面我们一起来看看吧。Red...
    99+
    2023-06-30
  • 基于MongoDB数据库中数据类型和$type操作符的示例分析
    这篇文章将为大家详细讲解有关基于MongoDB数据库中数据类型和$type操作符的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前面的话  本文将详细介绍Mong...
    99+
    2022-10-18
  • Redis基本数据类型和操作方法有哪些
    本文小编为大家详细介绍“Redis基本数据类型和操作方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis基本数据类型和操作方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2022-11-30
    redis
  • 第 3 部分 MongoDB常用基本操作
    help KEYWORDS.help() KEYWORDS.[TAB] db. rs. sh. show use db.help() db.a.help() rs.help() sh.help() 查看当前db版本 test>...
    99+
    2023-01-31
    常用 操作 MongoDB
  • js基本数据类型和引用数据类型的区别
    本篇内容主要讲解“js基本数据类型和引用数据类型的区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js基本数据类型和引用数据类型的区别”吧!基本数据类型和引用...
    99+
    2022-10-19
  • python序列数据类型之序列数据的基本操作
      1. 序列的长度、最大值、最小值、求和  通过内置函数len()、max() .minO可以获取序列的长度、序列中元索的最大值、序列中元素的最小值。通过内置函数sum()可以获取列表或元组中的各元素之和:如果有非数值元索,则导致TyeE...
    99+
    2023-06-02
  • MongoDB常用数据类型分享
    目录JSONBSONObject IDStringIntegerDoubleBooleanArrayObjectnullTimestampDateJSON  &e...
    99+
    2022-11-13
  • Redis基本数据类型Zset有序集合常用操作实例分析
    这篇文章主要介绍“Redis基本数据类型Zset有序集合常用操作实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis基本数据类型Zset有序集合常用操作实例分析”文章能帮助大家解决问题。...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作