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 multiple Data center,官方推荐的指导文档。
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:...
使用Express与MongoDB 搭建多人博客
主要介绍了Thinkphp使用mongodb数据库实现多条件查询方法,修改了mongodb驱动文件来实现复合查询、多条件查询,需要的朋友可以参考下
本文将详细介绍关于MongoDB分片键的选择和案例,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 MongoDB版本:3.6 一、分片键类别 1.升序片键 升序片键例如:日期时间字段、自增字段。 2.随机...
3、MongoDB多对多关系型 4 三、创建数据库(mongodb_test) 4 四、MongoDB得增删改查(crud) 4 1、MongoDB查询 4 2、order和投影查询 5 3、MongoDB增加 6 4、MongoDB修改 7 5、MongoDB删除 9 6、MongoDB分页 10 7、...
spring boot mongodb 配置多数据源,正式环境中截取出来的代码,亲测有效
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
spring data mongodb的demo程序,参考App.java中的调用方法,mongodb配置文件在resources目录下,整个项目使用maven,适合初学者学习。
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...
Spark-Mongodb是一个库允许用户利用Spark SQL读写数据至MongoDB集合
本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...
在MongoDB中,不强调一定对数据进行Normalize ,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB的文档...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
mongodb-log 是一个基于MongoDB的Python日志系统。 MongoDB 的 Capped Collection是一个天生的日志系统,MongoDB自己的oplog就是用它来存储的,Capped Collection的特点是可以指定Collection的大小,当记录总大小...
1.了解Spring ...将存储库与多个Spring Data模块一起使用 7.4。定义查询方法 7.4.1。查询查询策略 7.4.2。查询创建 7.4.3。属性表达式 7.4.4。特殊参数处理 7.4.5。限制查询结果 7.4.6。流式查询结果