mysql - mongoDB限制扫描的条目数

标签 mysql mongodb

我正在尝试 mongoDB,我需要翻译以下 SQL 查询。

SELECT * FROM infos_cli 
       WHERE MATCH(denomination) AGAINST('cafe') 
       WHERE code_postal LIKE '34%'

我的全文索引定义:

db.infos_cli.createIndex(
    {   "code_postal": 1,
        "denomination": "text"
    }, 
    {default_language: "french"},
    {name: "indexSerch"}
)

我在 mongoDb 中的查询:

db.infos_cli.find({code_postal : /34/, $text: {$search: "cafe"}})

但是它不起作用。 谁能解释一下我该怎么做?

最佳答案

在这种情况下,请为邮政字段和文本搜索创建单独的索引

db.articles.createIndex({ author : 1}) //postal... in your case

db.articles.createIndex({ 
    "denomination" : "text"
}, {
    default_language : "french"
}, {
    name : "indexSerch"
})

my query

db.getCollection('articles').find({
    $text : {
        $search : "coffee",
        $language : "french"
    }
}).explain()

结果显示存在所需的 TEXT 阶段和 IXSCAN!

result from explain:

{
    "queryPlanner" : {
        "plannerVersion" : 1,
        "namespace" : "testCode.articles",
        "indexFilterSet" : false,
        "parsedQuery" : {
            "$text" : {
                "$search" : "coffee",
                "$language" : "french",
                "$caseSensitive" : false,
                "$diacriticSensitive" : false
            }
        },
        "winningPlan" : {
            "stage" : "TEXT",
            "indexPrefix" : {},
            "indexName" : "denomination_text",
            "parsedTextQuery" : {
                "terms" : [
                    "coffe"
                ],
                "negatedTerms" : [],
                "phrases" : [],
                "negatedPhrases" : []
            },
            "inputStage" : {
                "stage" : "TEXT_MATCH",
                "inputStage" : {
                    "stage" : "TEXT_OR",
                    "inputStage" : {
                        "stage" : "IXSCAN",
                        "keyPattern" : {
                            "_fts" : "text",
                            "_ftsx" : 1
                        },
                        "indexName" : "denomination_text",
                        "isMultiKey" : false,
                        "isUnique" : false,
                        "isSparse" : false,
                        "isPartial" : false,
                        "indexVersion" : 1,
                        "direction" : "backward",
                        "indexBounds" : {}
                    }
                }
            }
        },
        "rejectedPlans" : []
    },
    "serverInfo" : {
        "host" : "gbernas3-lt",
        "port" : 27017,
        "version" : "3.2.0",
        "gitVersion" : "45d947729a0315accb6d4f15a6b06be6d9c19fe7"
    },
    "ok" : 1
}

欢迎任何评论!

关于mysql - mongoDB限制扫描的条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278603/

相关文章:

mysql - 学生连续缺课5天(节假日除外)

mysql - 在 WHERE LIKE 子句中选择

mysql - 安装mongodb 2.4.14和mysql后报错

node.js 在向 mongodb 中插入许多记录时静默停止

javascript - 表格没有使用谷歌图表的列

MySQL - 从交易表中找出产品的数量并将结果放入另一个表中

MySQL:外键约束在 InnoDB 中被忽略

java - 使用 vertx 将 Mongo 集合流式传输到 Kafka 主题的方法应该是什么?

ruby-on-rails - Rails 4 中的 Mongoid 1-N 关系(一对多)

node.js - Meteor客户端同步服务器数据库调用