Regex MongoDb未在查询说明符中注册字段
我正在查询mongodb集合,仅检索如下子文档:Regex MongoDb未在查询说明符中注册字段,regex,mongodb,Regex,Mongodb,我正在查询mongodb集合,仅检索如下子文档: db.Category.find({"Children.Url" : "www.myurl.com"}, {"Children.$" : 1}) 但当尝试运行类似的查询时,但使用正则表达式: db.Category.find({"Children.Url" : /myurl/i}, {"Children.$" : 1}) 我得到这个错误: error: { "$err" : "positional operator (Children.$)
db.Category.find({"Children.Url" : "www.myurl.com"}, {"Children.$" : 1})
但当尝试运行类似的查询时,但使用正则表达式:
db.Category.find({"Children.Url" : /myurl/i}, {"Children.$" : 1})
我得到这个错误:
error: {
"$err" : "positional operator (Children.$) requires corresponding field in query specifier",
"code" : 16352
}
为什么在使用regex时没有注册实际指定了相应的字段?这似乎是mongodb中的一个错误,之前也在这里得到了回答: 这样修改查询会得到预期的结果:
db.Category.find({"Children.Url" : {$in : [/myurl/i]}}, {"Children.$" : 1})
这是一个众所周知的问题。解决办法是:
db.Category.find({"Children": {$elemMatch: {Url: /myurl/i}}}, {"Children.$": 1})