2013-11-26 3 views
0

У меня есть коллекция и имеют значение, как это есть:поиск строковых данных из MongoDB

"newsletter": "{\"newsletter_user_list_id\":\"11223344\",\"newsletter_id\":\"11111\",\"newsletter_send_id\":\"24111113909\"}", 

"useragent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit\/537.71 (KHTML, like Gecko)", 

Как написать запрос для выборки всех записей, имеющих newsletter_user_list_id «11223344»?

+0

Почему вы храните значение информационного бюллетеня в виде строки? Вы можете проанализировать его как JSON и сохранить его как объект JSON. – Munim

+0

Для вложенной структуры данных вы можете использовать точку для представления ее уровня: db.collection.find ({newsletter.newsletter_user_list_id: «112233445»}) – wuchang

ответ

0

Вы выбрали действительно странный способ хранения ваших данных. Похоже, у вас есть объект в поле вашего информационного бюллетеня, но на самом деле это строка. Так у вас есть 2 варианта:

  • использование $regex найти newsletter_user_list_id:11223344 и страдать всю оставшуюся жизнь с этим приложением.
  • преобразовать его в соответствующий объект с соответствующими типами (номера должны быть номерами, а не строками) и использовать object notation для доступа к поддокументам. db.a.find({'newsletter.newsletter_user_list_id' : 11223344})

P.S. также я могу написать regex для вас, я думаю, что не должен этого делать, потому что боюсь, что вы будете придерживаться этой схемы.

+0

Дело в том, что я сбрасываю данные из другого источника. Так что просто вставляйте его как есть. –

+0

, поэтому будет полезно, если вы также можете задать регулярное выражение. –

+0

@AlwinAugustin вы действительно понимаете, что это не так, как должна работать база данных? Вы должны правильно проанализировать свои данные, а не хранить все как гигантский текст. –

Смежные вопросы