【问题标题】:Does $in operator has some build in memoization$in 运算符是否有一些内置的记忆功能
【发布时间】:2020-05-22 18:34:42
【问题描述】:

我知道我可以使用$in 在特定字段上搜索多个值。例如,如果我有这个数组怎么办:

[1, 2, 2, 2, 3, 4]

假设这就是我们要查询的 ID。

我的问题是,mongodb 是否为每个元素查询 6 次,或者 mongodb 是否有一些内置的记忆功能,所以它只查询 4 ​​次,因为2 在这里是 3 次,所以再次查询它是不必要的。

【问题讨论】:

  • 您可以通过使用虚拟数据创建一个大型集合并查询像 [1, 2] 和 [1, 1, 1, 1, ..., 2] 这样的数组来测试它一百万左右 1s。

标签: mongodb performance memoization


【解决方案1】:

explain 助手可以说明这一点:

PRIMARY> db.collection.explain().find({a:{$in:[1, 2, 2, 2, 3, 4]}}).next().queryPlanner

{
    "plannerVersion" : 1,
    "namespace" : "test.collection",
    "indexFilterSet" : false,
    "parsedQuery" : {
        "a" : {
            "$in" : [
                1,
                2,
                3,
                4
            ]
        }
    },
    "winningPlan" : {
        "stage" : "EOF"
    },
    "rejectedPlans" : [ ]
}

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2018-05-02
    • 2021-10-24
    • 1970-01-01
    • 2019-07-05
    • 2015-12-07
    相关资源
    最近更新 更多