Regex 是';查询';MongoDB中的关键字?

Regex 是';查询';MongoDB中的关键字?,regex,mongodb,Regex,Mongodb,我有一个MongoDB集合,看起来像这样: > db.Log.findOne() { "_id" : ObjectId("4f456b6413536c52836ed9d2"), "action" : "POST", "url" : "/path/to/resource", "query" : "key1=value1,;key2=value2,;key3=value3", "startDate" : ISODate("2012-02-22T22:25:39.517Z"), "endDate

我有一个MongoDB集合,看起来像这样:

> db.Log.findOne()
{
"_id" : ObjectId("4f456b6413536c52836ed9d2"),
"action" : "POST",
"url" : "/path/to/resource",
"query" : "key1=value1,;key2=value2,;key3=value3",
"startDate" : ISODate("2012-02-22T22:25:39.517Z"),
"endDate" : ISODate("2012-02-22T22:25:40.450Z")
}
以下是我从以下查询中得到的答复:

> db.Log.find( { query: { $regex: /key1/, $options:'i' } } )

error: {
"$err" : "Can't canonicalize query: BadValue unknown top level operator: $regex",
"code" : 17287
}

如果同一查询是“query”(例如“url”)以外的字段,则该查询可以正常工作。字段名“query”是否对regex查询有特殊解释?

看起来MongoDB对待
query
的方式与运算符相同

如果您将查询放在
$query
操作符(或另一个
查询
操作符)中,则该操作有效:

这并不特定于您对
$regex
的使用,因为我也可以在其他查询中重现这个问题


检查了MongoDB JIRA,这是一个已知问题:。

我还没有测试这是否与您拥有的冲突,但根据文档,“$query”是一个运算符。这是文件:啊,是的。那听起来像是一个已知的问题。谢谢
db.Log.find( {$query: { query: { $regex: /key1/, $options:'i' } } } )