Монго запрос во вложенных полях - PullRequest
0 голосов
/ 01 марта 2012

У меня есть БД, в которой есть записи с вложенными полями, такими как:

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

Я использую следующий запрос для извлечения таких записей.Однако я ищу более общий случай, когда запрос поля соответствует / tv9 /, который включает в себя tv9 как часть любого поиска.Вроде бы также должны возвращаться livetv9, movietv9 и т. Д. Следующий запрос, похоже, не работает:

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

1 Ответ

1 голос
/ 01 марта 2012

$ 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" ] } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...