Как изменить значения Mongo в предложении where в запросе? - PullRequest
0 голосов
/ 03 августа 2011

Есть ли способ изменить значения монго в предложении where в поисковом запросе?

Именно этим я сейчас и пользуюсь:

$db->users->findOne(array("redirect_uri" => $arrParsedUrl['host']));
  • Inв этом случае мне нужно убедиться, что значение, ранее вставленное в базу данных, является только частью хоста URL.

Что я хотел бы сделать, это примерно так (но это не работает):

$db->users->findOne(array(parse_url("redirect_uri")['host'] => $arrParsedUrl['host']));
  • В этом случае я смогу вставить полный URL в базу данных с самого начала.Функция «parse_url» в запросе проверяет, действительно ли сравнивается только часть узла.

Есть идеи, как добиться чего-то похожего?

Редактировать: Я не хочуобновить значения в базе данных.Изменяйте только значение из базы данных, используемой в предложении where, которое сравнивается с входным значением.

Входное значение всегда будет частью хоста URL.

Edit2:

  1. У меня есть несколько документов в коллекции под названием пользователи.
  2. Все документы имеют поле с именем "redirect_uri", которое содержит URL.
  3. Когда я вызываю функцию php с URL-адресом в качестве ввода, я хотел бы вернуть документ, в котором основная часть входного URL-адреса совпадает с основной частью "redirect_uri" в документе.Например, http://www.foo.com/bananas ("redirect_url") = http://www.foo.com/apples (входной URL)
  4. Как я могу запросить MongoDB, чтобы получить документ, в котором основная часть "redirect_url" такая жекак часть хоста входного URL?Изменить входной URL-адрес для www.foo.com не проблема, но как я могу таким же образом изменить часть «redirect_url», чтобы запрос дал мне правильный ответ?

1 Ответ

1 голос
/ 03 августа 2011

Ваш вопрос немного двусмысленный, вы ищете update (этот только обновляется):

db.collection.update( criteria, objNew, upsert, multi );

или findAndModify (этот обновляет и получает)

Edit:

Просто выполните преобразование на стороне клиента. Философия mongoDB заключается в том, чтобы продвигать как можно больше работы для клиентов.e

Edit2:

  • Вы можете использовать регулярные выражения .
  • Вы можете реструктурировать свою базу данных, чтобы хранить хост в отдельном поле.
...