MongoDB提供了 "multikey" 的特性可以自动索引数组每个元素。
一个好的例子就是关于Tagging。假使一篇文章的tag
$ dbshell
> db.articles.save( { name: "Warm Weather", author: "Steve",
tags: ['weather', 'hot', 'record', 'april'] } )
> db.articles.find(){"name" : "Warm Weather" ,
"author" : "Steve" , "tags" : ["weather","hot","record","april"] ,
"_id" : "497ce4051ca9ca6d3efca323"}
可以很轻松的进行查询。
> db.articles.find( { tags: 'april' } )
{"name" : "Warm Weather" , "author" : "Steve" ,
"tags" : ["weather","hot","record","april"] , "_id" :
"497ce4051ca9ca6d3efca323"}
我们可以索引数组. 在数组上创建索引,结果就是数组中每个元素都被索引了。
> db.articles.ensureIndex( { tags : 1 } )
true
> db.articles.find( { tags: 'april' } )
{"name" : "Warm Weather" , "author" : "Steve" ,
"tags" : ["weather","hot","record","april"] , "_id" : "497ce4051ca9ca6d3efca323"}
> db.articles.find( { tags: 'april' } ).explain()
{"cursor" : "BtreeCursor tags_1" , "startKey" :
{"tags" : "april"} , "endKey" : {"tags" : "april"} ,
"nscanned" : 1 , "n" : 1 , "millis" : 0 }
在数组中的嵌入对象
同样的也可以用于数组中的嵌入对象
> db.posts.find( { "comments.author" : "julie" } )
{"title" : "How the west was won" , "comments" :
[{"text" : "great!" , "author" : "sam"},
{"text" : "ok" , "author" : "julie"}], "_id" : "497ce79f1ca9ca6d3efca325"}
在给定的集中查询所有的值
使用$all, 匹配所有给定集中的元素。例子:
> db.articles.find( { tags: { $all: [ 'april', 'record' ] } } )
{"name" : "Warm Weather" , "author" : "Steve" , "tags" :
["weather","hot","record","april"] , "_id" : "497ce4051ca9ca6d3efca323"}
> db.articles.find( { tags: { $all: [ 'april', 'june' ] } } )
> //不匹配
Parallel Arrays(并行数组)
当使用 compound index, 在任意的document中,
索引的值可以为任意类型,数组也可以。因此如果有个索引在{a: 1, b: 1}。下面的都可以使用这个索引。
{a: [1, 2], b: 1}{a: 1, b: [1, 2]}
然而,当我们插入下面的document。就会报错"cannot index parallel arrays":
错误原因就是索引了并行数组。在这个组合键的笛卡尔积必须被索引。这难以控制。
|
相关推荐
windows 版本 mongodb安装包 多个版本安装文件下载地址
MongoDB通过数据中心感知的复制、缩放和操作自动化,帮助组织在多个数据中心之间高效地部署和管理全球应用。此外,业务连续性和用户体验是驱动数据库跨地域部署的两个主要原因。 业务连续性指的是,无论数据库是...
在修改的代码段中,主要对“or”逻辑进行了处理,具体通过查询条件数组中的键名判断,将匹配到的条件转换成MongoDB可以识别的格式,并组合到一起形成复合查询。例如,当条件值中包含“or”,会创建一个数组,并将...
在Spring Boot应用中,MongoDB的多数据源配置是一项关键任务,特别是在大型分布式系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或灾难恢复策略。本篇文章将详细解析如何在Spring Boot中配置MongoDB的多...
spring.data.primary.mongodb.uri= mongodb://192.168.10.136:27017/eqt #spring.data.secondary.mongodb.uri= mongodb://192.168.10.136:27017/lxyz spring.data.secondary.mongodb.uri= mongodb://192.168.10.138:...
2. 高可用:MongoDB支持高可用性,可以自动地将数据复制到多个节点上,从而确保数据的安全。 3. 可扩展:MongoDB支持水平扩展,可以根据需要增加节点来提高性能。 4. 自动收缩:MongoDB可以自动地将数据收缩到合适的...
在项目结构中,`jdbc4mongodb`可能是指该项目同时包含了对关系型数据库(如JDBC)和MongoDB的支持,这表明项目可能涉及多数据源的处理。 总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和...
5. **副本集**:为了实现高可用性,MongoDB可以设置副本集,其中至少有一个主节点和一个或多个从节点,数据自动在节点间同步。 6. **分片**:对于大数据场景,MongoDB支持分片,将数据分布在多个机器上,以提高存储...
10. GridFS:用于存储和检索大文件,将文件分割为多个块存储在MongoDB中。 使用这个jar包,开发人员可以轻松地在Java应用中集成MongoDB,实现数据持久化、读写操作、备份恢复等功能。在实际项目中,我们还需要了解...
这需要多个MongoDB实例,并通过配置分片策略来分散数据。 - 复制集:复制集提供了冗余和故障转移,可以设置多个数据副本。在Windows 7上配置复制集,需要在每个成员上启动`mongod`服务,并进行初始化和添加成员。 ...
MongoDB 是一个文件数据库,其他 Linux 系统下安装也是类似的。 知识点 1:下载 MongoDB 在安装 MongoDB 之前,需要下载 MongoDB 的安装包。下载地址为 ...
6. 键与索引:讨论唯一性键、复合键和多键索引,以及如何创建和管理索引以优化查询性能。 7.聚合框架:MongoDB的聚合框架允许对数据进行处理和分析,包括分组、过滤、计算统计值等操作,类似于SQL的聚合函数。 8. ...
此外,MongoDB的分片(sharding)特性允许将数据分布到多个服务器,以实现水平扩展,处理大规模的数据和高并发访问。 在实际应用中,MongoDB被众多知名公司广泛采用,如Craigslist、FourSquare、Shutterfly、bit.ly...
- 复制集是MongoDB提供的一种高可用性解决方案,它包括一个主节点和多个从节点,数据在所有节点间实时同步。 - 设置复制集需要在每个成员上配置复制集参数,并指定其他成员的信息。 - 当主节点失效时,从节点会...
数据库则是MongoDB的基本存储单元,一个实例可以包含多个数据库,每个数据库又包含多个集合。 MongoDB的一大特色是它的查询语言,它支持类似于面向对象的查询语法,能够执行类似于关系数据库的单表查询。此外,...
1. **事务支持**:MongoDB 4.0开始支持多文档ACID事务,这意味着用户可以在单个操作中执行跨多个文档的读写操作,提高了数据一致性。 2. **聚合框架优化**:4.0版本改进了聚合框架的性能,使得复杂查询和分析操作更...
MongoDB使用的是集合(Collection)作为存储数据的容器,每个集合可以包含多个JSON格式的文档(Document)。它支持嵌套文档(Embedded Document)和分片(Shard),使用分片键(ShardKey)来分布数据。 9. MongoDB...
这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习和性能测试。 在深入探讨MongoDB的测试数据之前,我们先来了解一下MongoDB的基本概念...
数据库则是存储多个集合的地方,是MongoDB的数据存储单元。 在MongoDB的操作方面,手册会涵盖增删改查(CRUD)操作。增加数据时,可以使用`insertOne()`或`insertMany()`方法将单个或多个文档插入到集合中。删除...