2015-07-16 2 views
2

Как искать запись ttoken по мобильному телефону. а затем удалить эту запись?Как выполнить поиск записи, а затем удалить ее

User.rb:

field :ttokens, type: Hash, :default => {} # Stored as hash over numbers

Обычно значение ttokens, в консоли рельсы, заключаются в следующем:

ttokens: {"919839398393"=>{"atoken"=>"f704e803061e594150b09ad8akabfc6105ac85ab", "confirmed"=>true}, "91812798765"=>{"atoken"=>"255cb70926978b93eik67edb52fa23a163587b4b", "confirmed"=>true}} 

мне нужен запрос MongoDB для поиска записи ttoken по мобильному номеру, а затем удалить эту запись. Используемая БД - MongoDB. Любые рекомендации или помощь будут высоко оценены.

ответ

1

Для внедренного элемента необходимо использовать точечную нотацию MongoDB, что означает, что «ключ» должен быть строковым типом нотации. Также применяют $exists, чтобы соответствовать, где ключ имеет в наличии и .unset() метод из Mongoid:

User.where('_id'=> userId, 'ttokens.919839398393'=> { '$exists' => true }).unset(
    'ttokens.919839398393' 
) 

Это эффективно $unset оператор MongoDB, который удаляет «ключи» от документа по указанному пути.

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

+0

Благодарим за отзыв Blakes. Это хорошо работает, однако было бы здорово, если бы вы могли предложить, как удалить эту запись, только в конкретной пользовательской базе данных. Ваш текущий запрос удаляет ttokens из 919839398393 по всей базе данных пользователя. Я хотел бы удалить его только в конкретной пользовательской базе данных. У меня нет мобильного телефона. этого конкретного пользователя, и я могу найти его, используя его номер. – user1903022

+0

@ user1903022 Ваш вопрос показывает только это поле. Как мы подходим к пользователю? Значение id? Дополнительные поля в запросе - это только разделенный запятыми список. Смотрите, я добавил один. –

+0

Спасибо, Блейкс. Вы сделали мой день. Сейчас он отлично работает :-). Кроме того, в основном я разработчик Android, только начал изучать Ruby on Rails для бэкэнд, так что это было бы очень мило с вашей стороны, если бы вы могли предложить из каких источников получить больше опыта в RoR. Еще раз, спасибо. – user1903022

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