'query'是MongoDB中的关键字吗?

时间:2014-11-11 22:28:20

标签: 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" : 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
}

如果它是“查询”以外的某些字段(例如“url”),则相同的查询可以正常工作。字段名称“查询”是否对正则表达式查询有特殊解释?

1 个答案:

答案 0 :(得分:2)

看起来MongoDB正在将query视为与$query运算符相同。

如果您将查询放在$query运算符(或其他query)中,它就有效:

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

这并非特定于您使用$regex,因为我可以使用其他查询重现该问题。

检查了MongoDB JIRA,这是一个已知问题:SERVER-8025