mongodb文档(mongodb 数据文件)
本篇文章给大家谈谈mongodb文档,以及mongodb 数据文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、mongoDB-document
- 2、MongoDB文档中字段是否有先后顺序之分
- 3、MongoDB批量操作文档(bulkWrite) --- 2022-04-03
- 4、mongodb文本搜索
- 5、MongoDB之创建文档
mongoDB-document
MongoDB 将数据记录存储为 BSON类型的 文档(document)。 BSON 是一种二进制数据类型,是json 的一种扩展, bson 支持了更多的数据类型。 下图就是一个document(文悉袭档) 示例:
document 的数据结构如下所示:由若干个字段-值对组成,其中字段的值可以是任何 BSON 数据类型 ,包括嵌入式数据结构如 其他文档、数组和文档数组等。
如下申明了一个mydoc 的文档,
字段(field)的命名都是由字符串组成
字段名称有以下几条限制:
对于不同的字段类型的存储操作,字段名称验证规则并不相同。下面总结了不同的插入和更新操作如空陆咐何处理以美元 ($) 为前缀的字段名称
修改非 $ 前缀的字段
修改非 $ 前缀的最外层字段,通过 literal 实现
使用管道创建一个名为spring2022的新集合,更新 $ 为前缀的 $term 字段
MongoDB 使用点符号来访问数组的元素和访问嵌入文档的字段
要通过从零开始的索引位置指定或访问数组的元素,请将数组名称与点 (.) 和从零开始的索引位置连接起来,并用引号引起来
示例:
要使用点表示法指定或访问嵌入文档的字段,请将嵌入文档名称与点 (.) 和字段名称斗纯连接起来,并用引号引起来
示例:
BSON 文档的最大大小为 16 兆字节
最大文档大小有助于确保单个文档不会使用过多的 RAM,或者在传输期间不会使用过多的带宽。为了存储大于最大大小的文档,MongoDB 提供了 GridFS API。
与 JavaScript 对象不同,BSON 文档中的字段是有序的
查询操作时字段顺序:
写操作时字段顺序
对于写入操作,MongoDB 保留文档字段的顺序,但以下情况除外:
在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id 字段作为主键。如果插入的文档省略了 _id 字段,MongoDB 驱动程序会自动为 _id 字段生成一个 ObjectId。 这也适用于通过带有 upsert: true 的更新操作插入的文档
_id 字段具有以下限制:
_id 字段常用值:
MongoDB文档中字段是否有先后顺序之分
Mongodb中的文档是一种Key:Value对组成的Json字符串,按理说,字段的先后顺序是不应该影响到查询操作的。
我们简单做个实验,往集合中插入一条记录:
db.testcollection.insert({"apple":2, "banana":3});
这时候,我们通过以下两种方式查询都是一样的:
第一种方式:
db.testcollection.find({"apple":2,"banana":3})
第二种方式:
db.testcollection.find({"banana":3,"apple":2})
通过上面两种方式查询都可以查询出来结果,都是同一条记录。那是否就可笑橡以说明,字段顺序是没有区别的呢?别着急,我们再看友升笑一个例子。
比方我们在集合中插入了下面一条记录:
db.testcollection.insert({"type":"fruit", "detail":{"apple":2, "banana":3}});
此时我们和上面一样,采用两种方式进行查询:
第一种方式:
db.testcollection.find({"detail":{"apple":2,"banana":3}})
第二种方式:
db.testcollection.find({"detail":{"banana":3,"apple":2}})
从两种查询方式的结果来看,其实结果是不一样的,第一种方式查询到了结果,但是第二种方式是没有查询到结果的。从这个实例来看,就可以告诉我们,当我们在查询具有嵌套文档的集合中,还是要稍微注意一点的,否则很有可能就会出现上面的情况。
我们如何避免出现上面这样因为书写顺序而导致的查询结果不一样的情况呢?有个办法,那就是在查询时不要使用json字符串进行查询,在这种具有嵌套文档的集合中,可以使用点符号进行操作,我们采用下面两种方式进行查询。
第一种方式:
db.testcollection.find({"detail.apple":2,"detail.banana":3})
第二种方式:
db.testcollection.find({"detail.banana":3,"detail.apple":2})
通过结果可以知道,这两种方式查询出来的结果是一样的,由此可见,不管好含是对于简单的查询,还是对于具有嵌套文档的查询,不在查询字符串中对字段值使用Json串书写格式,而是使用点号进行嵌套引用查询才是比较合适的做法,可以防止因书写字段顺序和文档中的字段顺序不一样导致的查询错误。
MongoDB批量操作文档(bulkWrite) --- 2022-04-03
本章介绍,通过销昌mongo shell,批量操作(bulkWrite)MongoDB文档数据。这里的批量操作不仅仅是前面章节提到的批量更新文档,MongoDB批量操作支持同时执行一批写操作,写操作包括:插入文档、更新文档、删除文档。
mongo shell通过db.collection.bulkWrite()函数执亏慧扒行批量操作。
批量操作支持下面写操作自由组合。
说明:
下面看一个综合里面,批量执行碧带一批文档写操作。
mongodb文本搜索
这几天做app,绕不开搜索,在没有看mongodb文档的情况下,胡思乱想了半个小时该怎么处理文本搜索,没想到官网对于文本搜索有非常详尽的说明,不看官方文档的码农就是少根筋。本文基本按照 官网的文本搜索 部分翻译,如有错,请各位批评指正!
要在mongodb中使用文本搜索,必须使用text索引和$text操作,下面的例子演示了如何创建text索引并且用它进行文本搜索。假设collection存储的数据如下例所示:
在mongodb中做文本搜索,必须要创建文本索引。文本索引建立在collection上,一个collection最多只能建立一个文本索引,文本索引可以cover多个域。如要在上例中的name和description中搜索文本,则可建立文本索引:
在建立文本索引的基础上,我们可以实施文本操作,如下例在name和description中寻找包括java或coffee或shop的文档,这里的$text表示或操作。
当然,也有更精确的搜索操作,如下例中精确寻找包含java或coffee shop的文档
mongodb还提供了排除好敬操作,如下例中的寻找包含java或coffee,但不包括coffee的文档
在很多情况下,我们需要对搜索的结果进行排序,mongodb也为我们提供了这种排序机制,如下例中所示
其实,mongodb对于一般的app中的搜索而言已经足够,在并发度不高的情况下,直接使用即可。如果并发度偏高,可以借助缓存的形式,对常用的搜索关镇让键字,在内存友旅慎中建立到排表,提升访问效率。
MongoDB之创建文档
如果在创建一篇文档的时候不指定主键,那么mongodb客户端会为你自动生成对象主键来作为文档主键.
[img]关于mongodb文档和mongodb 数据文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。