如何在MongoDB文本搜索中查看“查询调试字符串”?

时间:2015-01-31 03:36:19

标签: mongodb

我正在尝试MongoDB的文本搜索功能,在互联网上我可以看到人们这样做的很多信息:

db.posts.runCommand("text", {search: '"robots are crazy"'})

得到这个:

{
    "queryDebugString" : "robot||||robots are||",
    "language" : "english",
    "results" : [
        {
            "score" : 0.6666666666666666,
            "obj" : {
                "_id" : ObjectId("50ebc482214a1e88aaa4ad9e"),
                "txt" : "Robots are superior to humans"
            }
        }
    ],
    "stats" : {
        "nscanned" : 2,
        "nscannedObjects" : 0,
        "n" : 1,
        "timeMicros" : 185
    },
    "ok" : 1
}

我知道runCommand("text", ...已被弃用,但我也尝试了db.posts.find({ $text: { $search: '"robots are crazy"' } })方法,而且没有。

如何查看此“queryDebugString”属性?我在寻找启动mongod时使用的某种调试标志,但找不到任何东西。

2 个答案:

答案 0 :(得分:1)

对于更新版本的Mongo(至少2.6),请使用.explain(true)作为详细输出,其中包含parsedTextQuery字段,其中包含的信息比queryDebugString更多,更易读:

> db.test.find({ "$text" : { "$search" : "cows are lovely" } }).explain(true)
{
    "cursor" : "TextCursor",
    ...
    "stats" : {
        "type" : "TEXT",
        ...
        "parsedTextQuery" : {
            "terms" : ["cow", "love"],
            "negatedTerms" : [],
            "phrases" : [],
            "negatedPhrases" : []
        ]
    }
    ...
}

答案 1 :(得分:-1)

试试这个:

db.posts.find({ "text" : '"robots are crazy"' })

现在在Mongo中,操作变为(基本状态),如:

db.collection.action({query}}

我认为它已经足够开始了,但是尝试转到MongoDB文档:

http://docs.mongodb.org/manual/