嵌套字段中的Mongo查询

时间:2012-03-01 14:14:04

标签: javascript mongodb

我有一个DB,其中包含嵌套字段的记录,如:

"requestParams" : { "query" : [ "tv9" ] }

我使用以下查询来获取这些类型的记录。然而,我正在寻找一个更一般的情况,其中字段查询匹配/ tv9 /其中包括tv9作为任何搜索的一部分。喜欢它也应该返回livetv9,movietv9等。以下查询似乎不起作用:

db.requestLog.findOne({url : /search.json/, requestParams: {$elemMatch: {query: /tv9/}}})

1 个答案:

答案 0 :(得分:1)

$ elemMatch用于匹配数组中的部分文档元素。由于您希望直接匹配字符串,因此使用此运算符是不合适的。请改用:

db.requestLog.findOne({url : /search.json/, 'requestParams.query': /tv9/})

示例:

mongos> db.test.save({r:{q:["tv9"]}})
mongos> db.test.save({r:{q:["tv"]}})
mongos> db.test.save({r:{q:["ltv9l"]}})
mongos> db.test.find({'r.q':/tv9/})
{ "_id" : ObjectId("4f5095d4ec991a74c16ba862"), "r" : { "q" : [ "tv9" ] } }
{ "_id" : ObjectId("4f5095deec991a74c16ba864"), "r" : { "q" : [ "ltv9l" ] } }