MongoChef查询IntelliShell与QueryBuilder显示不同的结果

时间:2016-02-08 16:44:38

标签: javascript mongodb studio3t

从查询生成器创建并运行以下查询显示10条结果记录。如果我在IntelliShell中运行相同的代码,我什么都没收到?我错过了什么?

更简单的一个再次有效。

db.user.find({

    em: {
        $regex: '.*\Qdirk\E.*',
        $options: 'i' 
    }
})

像这样的更简单的一个再次起作用。 MongoChef是否存在$ regex的问题......

db.user.find({em: "dirk@test.com"})

1 个答案:

答案 0 :(得分:0)

请注意,您在这里遇到了一个非常特殊的案例。 \Q ... \E 的使用要求正则表达式以斜杠形式给出,而不是单引号。也就是说,查询必须为 db.user.find({ em: { $regex: /.*\Qdirk\E.*/, $options: 'i'}}) ,或者只是 db.user.find({ em: /.*\Qdirk\E.*/i })

请注意,这不是MongoChef中的问题,但是MongoDB shell本身需要在 \Q {{1时使用斜杠表单正则表达式中使用了,而MongoChef的IntelliShell基于MongoDB shell。

虽然MongoChef中的Collection View和Query Builder将很乐意处理任何一个表单,但是MongoChef中的图形查询生成器生成的查询文本已在upcoming 3.4.0 release中得到增强,以便始终生成斜杠表单,这将提供一致的结果,然后将该查询复制并粘贴到IntelliShell或基本的MongoDB shell中。

感谢您使用MongoChef!