`
风雪涟漪
  • 浏览: 506864 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9003
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18380
社区版块
存档分类
最新评论

MongoDB Multikeys(多个键)

阅读更多

Multikeys(多个键)

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":
{a: [1, 2], b: [1, 2]}

错误原因就是索引了并行数组。在这个组合键的笛卡尔积必须被索引。这难以控制。


分享到:
评论

相关推荐

    win mongodb安装包多个版本下载地址

    windows 版本 mongodb安装包 多个版本安装文件下载地址

    MongoDb多数据中心

    MongoDB通过数据中心感知的复制、缩放和操作自动化,帮助组织在多个数据中心之间高效地部署和管理全球应用。此外,业务连续性和用户体验是驱动数据库跨地域部署的两个主要原因。 业务连续性指的是,无论数据库是...

    Thinkphp使用mongodb数据库实现多条件查询方法

    在修改的代码段中,主要对“or”逻辑进行了处理,具体通过查询条件数组中的键名判断,将匹配到的条件转换成MongoDB可以识别的格式,并组合到一起形成复合查询。例如,当条件值中包含“or”,会创建一个数组,并将...

    Sping boot MongoDB 配置多数据源

    在Spring Boot应用中,MongoDB的多数据源配置是一项关键任务,特别是在大型分布式系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或灾难恢复策略。本篇文章将详细解析如何在Spring Boot中配置MongoDB的多...

    springboot +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:...

    MongoDB入门指南.pdf

    2. 高可用:MongoDB支持高可用性,可以自动地将数据复制到多个节点上,从而确保数据的安全。 3. 可扩展:MongoDB支持水平扩展,可以根据需要增加节点来提高性能。 4. 自动收缩:MongoDB可以自动地将数据收缩到合适的...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    在项目结构中,`jdbc4mongodb`可能是指该项目同时包含了对关系型数据库(如JDBC)和MongoDB的支持,这表明项目可能涉及多数据源的处理。 总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和...

    mongodb.dll 下载.zip

    5. **副本集**:为了实现高可用性,MongoDB可以设置副本集,其中至少有一个主节点和一个或多个从节点,数据自动在节点间同步。 6. **分片**:对于大数据场景,MongoDB支持分片,将数据分布在多个机器上,以提高存储...

    mongodb数据库jar包

    10. GridFS:用于存储和检索大文件,将文件分割为多个块存储在MongoDB中。 使用这个jar包,开发人员可以轻松地在Java应用中集成MongoDB,实现数据持久化、读写操作、备份恢复等功能。在实际项目中,我们还需要了解...

    mongodb Windows7 64位

    这需要多个MongoDB实例,并通过配置分片策略来分散数据。 - 复制集:复制集提供了冗余和故障转移,可以设置多个数据副本。在Windows 7上配置复制集,需要在每个成员上启动`mongod`服务,并进行初始化和添加成员。 ...

    linux安装mongodb教程

    MongoDB 是一个文件数据库,其他 Linux 系统下安装也是类似的。 知识点 1:下载 MongoDB 在安装 MongoDB 之前,需要下载 MongoDB 的安装包。下载地址为 ...

    MongoDB_two_MongoDB_

    6. 键与索引:讨论唯一性键、复合键和多键索引,以及如何创建和管理索引以优化查询性能。 7.聚合框架:MongoDB的聚合框架允许对数据进行处理和分析,包括分组、过滤、计算统计值等操作,类似于SQL的聚合函数。 8. ...

    五、MongoDB 学习PPT

    此外,MongoDB的分片(sharding)特性允许将数据分布到多个服务器,以实现水平扩展,处理大规模的数据和高并发访问。 在实际应用中,MongoDB被众多知名公司广泛采用,如Craigslist、FourSquare、Shutterfly、bit.ly...

    MongoDB安装包.zip

    - 复制集是MongoDB提供的一种高可用性解决方案,它包括一个主节点和多个从节点,数据在所有节点间实时同步。 - 设置复制集需要在每个成员上配置复制集参数,并指定其他成员的信息。 - 当主节点失效时,从节点会...

    Mongodb基础知识详解(值得珍藏).pdf

    数据库则是MongoDB的基本存储单元,一个实例可以包含多个数据库,每个数据库又包含多个集合。 MongoDB的一大特色是它的查询语言,它支持类似于面向对象的查询语法,能够执行类似于关系数据库的单表查询。此外,...

    mongodb-4.0.4_windows

    1. **事务支持**:MongoDB 4.0开始支持多文档ACID事务,这意味着用户可以在单个操作中执行跨多个文档的读写操作,提高了数据一致性。 2. **聚合框架优化**:4.0版本改进了聚合框架的性能,使得复杂查询和分析操作更...

    MongoDB简介与实践.pdf

    MongoDB使用的是集合(Collection)作为存储数据的容器,每个集合可以包含多个JSON格式的文档(Document)。它支持嵌套文档(Embedded Document)和分片(Shard),使用分片键(ShardKey)来分布数据。 9. MongoDB...

    mongodb-测试数据

    这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习和性能测试。 在深入探讨MongoDB的测试数据之前,我们先来了解一下MongoDB的基本概念...

    MongoDB参考手册.zip_MongoDB_T6U_mongodb中文手册

    数据库则是存储多个集合的地方,是MongoDB的数据存储单元。 在MongoDB的操作方面,手册会涵盖增删改查(CRUD)操作。增加数据时,可以使用`insertOne()`或`insertMany()`方法将单个或多个文档插入到集合中。删除...

Global site tag (gtag.js) - Google Analytics