MongoDB - 解释特定的解释输出

2024-05-08

我使用的是 MongoDB 版本 2.4.8。

[test] 2014-03-25 14:42:13.0 >>> db.users.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "test.users",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "username" : 1,
                        "age" : 1
                },
                "ns" : "test.users",
                "name" : "username_1_age_1"
        },
        {
                "v" : 1,
                "key" : {
                        "age" : 1,
                        "username" : 1
                },
                "ns" : "test.users",
                "name" : "age_1_username_1"
        }
]
[test] 2014-03-25 14:44:36.550 >>>

[test] 2014-03-25 14:33:12.945 >>> db.users.find({"age" : 14, "username" : /.*/}).explain()
{
        "cursor" : "BtreeCursor age_1_username_1 multi",
        "isMultiKey" : false,
        "n" : 16850,
        "nscannedObjects" : 16850,
        "nscanned" : 16850,
        "nscannedObjectsAllPlans" : 16850,
        "nscannedAllPlans" : 16850,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 86,
        "indexBounds" : {
                "age" : [
                        [
                                14,
                                14
                        ]
                ],
                "username" : [
                        [
                                "",
                                {

                                }
                        ],
                        [
                                /.*/,
                                /.*/
                        ]
                ]
        },
        "server" : "server01:27017"
}

解释输出的含义是什么username part?

            "username" : [
                    [
                            "",
                            {

                            }
                    ],
                    [
                            /.*/,
                            /.*/
                    ]
            ]

我很难理解这部分 否
无论我以正式还是非正式的方式看待它,这都很重要。


那里的输出特定于未绑定到字符串起始位置的正则表达式。因此,对于要扫描索引而不是集合的正则表达式(即使在这种情况下它将扫描整个索引),需要有一组起始边界和结束边界:

考虑使用不同正则表达式的第一个查询:

db.collection.find({ "username": /bob/ }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "",
                            {

                            }
                    ],
                    [
                            /bob/,
                            /bob/
                    ]
            ]
    },

因此,这意味着需要搜索整个字符串,然后匹配将以包含“bob”作为字符串一部分的内容结束。因此,第一部分是“词汇”匹配范围,第二部分是要应用的实际正则表达式:

以下查询更清楚地显示了这一点:

db.collection.find({ username: /^bob/ }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "bob",
                            "boc"
                    ],
                    [
                            /^bob/,
                            /^bob/
                    ]
            ]
    },

由于它锚定到字符串的开头,因此需要测试的索引的唯一条目在“bob”和“boc”之间“词汇”匹配。正则表达式再次作为边界的第二部分包含。

边界条目通常在内部被描述为“两部分”元素,正则表达式存在这种情况,第一部分具有字符串边界,这对于匹配索引有意义,然后正则表达式应用于那些匹配整体。

最后,请参阅以下内容:

db.collection.find({ username: {$gt: ""} }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "",
                            {

                            }
                    ]
            ]
    },

这本质上与您的初始查询相同,即匹配any string.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB - 解释特定的解释输出 的相关文章

随机推荐

  • 检索博客中所有标签的列表

    有没有办法使用 gdata api 检索所有列表labels在博主中 我需要根据该列表创建一个菜单 但不能简单地列出所有帖子并获取它 因为它是一个繁忙的博客 并且有超过 2000 个帖子 以下是使用 json 调用获取标签列表的最简单方法
  • 如何在 Yesod 中使用 CSS 框架?

    我想将 Blueprint CSS 框架与 Yesod 一起使用 有没有最佳实践 因为 Yesod 使用 CSS 模板 所以在我看来我不能直接使用 css 文件 我必须将它们重命名为 lucius files 吗 如何将 CSS 添加到 d
  • Swift - 对数组中每个字符串中的字符进行排序

    所以这个问题是这个问题的后续问题 允许相同字符串的快速字符串排列 https stackoverflow com questions 48976065 swift string permutations allowing the same
  • 何时应使用服务器端与客户端 Facebook 身份验证流程?

    Facebook 有两个身份验证流程 客户端和服务器端 每一项应该在什么时候使用 脸书文档 https developers facebook com docs authentication https developers faceboo
  • 如何从数据表中设置 DataGridViewComboBoxColumn 中的值?

    DataGridViewComboBoxColumn dgvcb DataGridViewComboBoxColumn grvPackList Columns Units Globals G ProductUtility G Utility
  • 从成员函数返回枚举

    我想实现返回枚举的函数 class myClass private res res public enum res ok fail res getRes bool checkRes res r other function that cha
  • 无法将参数值从字符串转换为小数?

    我有一个像这样的存储过程 ALTER PROCEDURE dbo usp CSR UpdateDailyCustomerWithLCDHistory Add the parameters for the stored procedure h
  • 参考当前命令的先前参数

    例如 我想执行以下操作 mv xxxx xxxx bak 我知道我可以使用这个命令 mv xxxx bak 我认为这在某种程度上并不直接 如果我能做到这一点那就太好了 mv xxxx 1 bak 有时我需要这样 echo xxxx yyyy
  • 带有电子墨水显示屏的 Android

    我有兴趣使用 AndroidE Ink http www eink com technology howitworks html为基础的平台 我知道已经是证明了 http vimeo com 3162590MOTO 曾经使用过 但我有兴趣将
  • 如何在 AngularJS 初始化之前防止元素显示( ng-show )

    在AngularJS中 我想知道如何防止在ng show生效之前页面上显示的元素 我发现一些帖子谈论ng cloak 但在我的情况下似乎不起作用 可能ng cloak是为了防止双花括号而不是 Element 样式 有人谈论的另一种方式是在
  • 如何将 JUnit 5 与 Gradle 结合使用?

    在成功运行 JUnit 4 测试后 我尝试将 JUnit 5 与 Gradle 一起使用 预期结果 JUnit 4 测试在输出中给出了很好的 通过 结果 并在build reports tests 实际结果 下面的 JUnit 5 测试不输
  • 如何在前端和后端之间共享javascript代码(ES6)

    这是 ES6 特定的副本这个所以线程 https stackoverflow com questions 3225251 how can i share code between node js and the browser 其中详细介绍
  • MySQL 一起使用 LIKE、AND、OR

    我正在创建一个搜索功能来搜索一些图片 每张图片都有一个状态 表示它是被批准还是被拒绝 mysql 在返回之前检查状态 但是它仍然返回不应该返回的图像 这是我的查询 SELECT FROM Pictures WHERE ImageTitle
  • Jenkins - Xcode 构建工作协同设计失败

    下面是我的构建脚本 不使用 xcodebuild 插件 构建步骤工程 我使用所需的证书和私钥创建了一个单独的钥匙串 它们在钥匙串访问中可见 脚本中的钥匙串命令不会失败 安全列表钥匙串将这些显示为有效的钥匙串 它的表现就像解锁命令并未真正成功
  • (无限?)JavaScript 代码中的循环

    我有以下 JavaScript 代码来在网站上 显示 XML function createChild node tabindex var child node childNodes var r var tabs for i 0 i
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 为什么.NET中的每个类都继承自Object?

    我不明白 为什么他们需要一个共同的基础 这个问题预设了一个谎言 他们不need一个共同的基础类型 这个选择并不是出于必要 这是出于为客户提供最佳价值的愿望 当设计类型系统或任何其他相关问题时 有时您会遇到决策点 您必须决定 X 或非 X 公
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • spring启动时如何加载@Cache?

    我正在使用 spring cache 来改进数据库查询 其工作原理如下 Bean public CacheManager cacheManager return new ConcurrentMapCacheManager books Cac
  • MongoDB - 解释特定的解释输出

    我使用的是 MongoDB 版本 2 4 8 test 2014 03 25 14 42 13 0 gt gt gt db users getIndexes v 1 key id 1 ns test users name id v 1 ke