iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mongodb中在嵌套子文档的文档上面建立索引
  • 483
分享到

mongodb中在嵌套子文档的文档上面建立索引

2024-04-02 19:04:59 483人浏览 安东尼
摘要

在mongoDB的test库:> db.data.insert({name:"1616",info:{url:"Http://www.1616.net/",city:"beijing"}});>

  1. mongoDB的test库:

> db.data.insert({name:"1616",info:{url:"Http://www.1616.net/",city:"beijing"}});

> db.data.insert({name:"hao123",info:{url:"http://www.hao123.com/",city:"beijing"}});

> db.data.insert({name:"ll4la",info:{url:"http://www.114la.com/",city:"dongguan"}});


2.对字段 info 创建索引

> db.data.ensureIndex({info: 1});


3.data表的索引查询:

rs0:PRIMARY> db.data.getIndexes()

[

        {

                "v" : 1,

                "key" : {

                        "_id" : 1

                },

                "name" : "_id_",

                "ns" : "test.data"

        },

        {

                "v" : 1,

                "key" : {

                        "info" : 1

                },

                "name" : "info_1",

                "ns" : "test.data"

        }

]

4.索引的用法:

以下查询是可以用到info的索引的:

>db.data.find({info: {url:"http://www.1616.net/", city:"beijing"}});

>db.data.find({info: {url:"http://www.1616.net/"} });

>db.data.find({info: {city:"beijing"});

可以使用query.explain()查看索引的使用:

    

rs0:PRIMARY> db.data.find({info: {city:"beijing"}}).explain()

{

        "queryPlanner" : {

                "plannerVersion" : 1,

                "namespace" : "test.data",

                "indexFilterSet" : false,

                "parsedQuery" : {

                        "info" : {

                                "$eq" : {

                                        "city" : "beijing"

                                }

                        }

                },

                "winningPlan" : {

                        "stage" : "FETCH",

                        "inputStage" : {

                                "stage" : "IXSCAN",

                                "keyPattern" : {

                                        "info" : 1

                                },

                                "indexName" : "info_1",

                                "isMultiKey" : false,

                                "isUnique" : false,

                                "isSparse" : false,

                                "isPartial" : false,

                                "indexVersion" : 1,

                                "direction" : "forward",

                                "indexBounds" : {

                                        "info" : [

                                                "[{ city: \"beijing\" }, { city: \"beijing\" }]"

                                        ]

                                }

                        }

                },

                "rejectedPlans" : [ ]

        },

        "serverInfo" : {

                "host" : "myCentos.WORKGROUP",

                "port" : 27017,

                "version" : "3.2.8",

                "gitVersion" : "ed70e33130c977bda0024c125b56d159573Dbaf0"

        },

        "ok" : 1

}


但是这样的查询就不行:

>db.data.find({"info.city":"beijing"});    //字段部分必须加引号

>db.data.find({info.url:"..."});

这样的查询语句,只能使用类似的组合索引:

> db.data.ensureIndex({"info.url":1, "info.city":1});


5.组合索引

> db.data.ensureIndex({"info.url":1, "info.city":1});

即使查询时,与定义的排序相反,也是可以使用索引扫描的。

rs0:PRIMARY> db.data.find({"info.url": /http:*/i}).sort({"info.url": -1, "info.city":-1}).explain()

{

        "queryPlanner" : {

                "plannerVersion" : 1,

                "namespace" : "test.data",

                "indexFilterSet" : false,

                "parsedQuery" : {

                        "info.url" : /http:*/i

                },

                "winningPlan" : {

                        "stage" : "FETCH",

                        "inputStage" : {

                                "stage" : "IXSCAN",

                                "filter" : {

                                        "info.url" : /http:*/i

                                },

                                "keyPattern" : {

                                        "info.url" : 1,

                                        "info.city" : 1

                                },

                                "indexName" : "info.url_1_info.city_1",

                                "isMultiKey" : false,

                                "isUnique" : false,

                                "isSparse" : false,

                                "isPartial" : false,

                                "indexVersion" : 1,

                                "direction" : "backward",

                                "indexBounds" : {

                                        "info.url" : [

                                                "[/http:*/i, /http:*/i]",

                                                "({}, \"\"]"

                                        ],

                                        "info.city" : [

                                                "[MaxKey, MinKey]"

                                        ]

                                }

                        }

                },

                "rejectedPlans" : [ ]

        },

        "serverInfo" : {

                "host" : "mycentos.WORKGROUP",

                "port" : 27017,

                "version" : "3.2.8",

                "gitVersion" : "ed70e33130c977bda0024c125b56d159573dbaf0"

        },

        "ok" : 1

}


您可能感兴趣的文档:

--结束END--

本文标题: mongodb中在嵌套子文档的文档上面建立索引

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

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

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

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

下载Word文档
猜你喜欢
  • MongoDB中怎么实现嵌套子文档分组
    本篇文章给大家分享的是有关MongoDB中怎么实现嵌套子文档分组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。M...
    99+
    2024-04-02
  • word文档如何建立索引
    建立索引可以帮助读者快速找到文档中特定的内容。在Word文档中建立索引,可以按照以下步骤操作:1. 首先,确保你的文档中已经有需要建...
    99+
    2023-09-29
    word
  • mongodb嵌套文档的操作是什么
    在MongoDB中,嵌套文档的操作指的是对嵌套在文档中的子文档进行增删改查操作。以下是一些常见的嵌套文档操作:1. 插入嵌套文档:-...
    99+
    2023-09-06
    mongodb
  • Golang无法在MongoDB中创建文档
    问题内容 我正在尝试将文档插入 mongodb,但尽管成功连接到 mongo,但我仍然收到以下错误: http: panic serving 172.27.0.8:40176: run...
    99+
    2024-02-12
  • WordPress中如何建立文章存档页面
    今天小编给大家分享一下WordPress中如何建立文章存档页面的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2023-03-21
    wordpress
  • 索引中的文档数量的获取方法
    亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《索引中的文档数量的获取方法》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。问题内容使用的库...
    99+
    2024-04-05
  • 如何为同名的嵌套字段创建文本索引
    php小编草莓将为大家介绍如何在同名的嵌套字段中创建文本索引。在数据库中,我们常常会遇到需要在嵌套字段中进行搜索和查询的情况。然而,当存在多个同名的嵌套字段时,创建文本索引就会变得复杂...
    99+
    2024-02-09
  • python 针对在子文件夹中的md文档实现批量md转word
    前言; 最近想要实现批量将mardown文档转化为word。网上有很多解决的方法,但是自己保存的md文档在不同的文件夹,而大部分只能实现同一文件夹内的转换,因此稍加改进,得出以下功能...
    99+
    2024-04-02
  • Sphinx PHP 在文档检索中的概念模型与应用实践
    导语:在当今信息爆炸的时代,文档检索系统成为了处理庞大数据的重要工具。Sphinx是一个强大的开源全文搜索引擎,它通过创建索引、检索、过滤和排序等功能,提供了高效的文档检索解决方案。本文将介绍Sphinx PHP在文档检索中的概念模型和应用...
    99+
    2023-10-21
    应用实践 文档检索 概念模型
  • 在Word中打印一个包含文档信息的其他页面
    要在Word中打印包含文档信息的其他页面,您可以按照以下步骤操作:1. 打开Word文档。2. 在文档的顶部,选择“插入”选项卡。3...
    99+
    2023-09-08
    Word
  • 如何在Gitee上建立一个中文名称的仓库
    在Gitee上建立一个中文名称的仓库有许多好处,比如更便于中文用户理解和记忆。下面我将介绍如何在Gitee上建立一个中文名称的仓库。第一步:注册Gitee账号如果你还没有Gitee账号,需要先进行注册。打开Gitee官网(https://g...
    99+
    2023-10-22
  • SQLServer 错误 7903 表错误:在对象 ID O_ID,索引 ID I_ID,分区 ID PN_ID,列 ID C_ID 的 FileStream 目录中发现孤立文件“FILE”。 故障
    详细信息 Attribute 值 产品名称 SQL Server 事件 ID 7903 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 DBCC2_FS_ORPHANED_FILE 消息...
    99+
    2023-11-05
    错误 孤立 分区
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作