Задать вопрос
JRazor
@JRazor
Senior StarkOverFlow Programmer

MongoDB: как осуществить поиск?

Здравствуйте. Возникла проблема при работе с PyMongo - не могу осуществить добавление в базу посредством поиска, так как не могу толком организовать поиск. Итак, имеется массив вида

[{data1: {key1: value1, key2: value2}}, {data2: {key2: value2, key2: value2}}]

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

Вопрос - как добавить в словарь data_n новый ключ и новое значение, без повторений?

UPD: Массив в последней версии выглядел так:

[{u'18': {u'hu': u'18 \xe9ves'}, u'_id': ObjectId('555f33062da57a4604e73fc9')}, {u'_id': ObjectId('555f33062da57a4604e73fca'), u'3d': {u'hu': u'3d'}}].

Да да, это порносайт. Я пытаюсь спарсить названия категорий на разных языках. Для общего обозначения храню часть URL (тут это "18" и "3d"), а в словарь ключа загружаю язык и перевод на этом языке. Получается, что главные ключи будут неизменны, а словарь ключа будет расширяться. И тут то и возникла проблема с database.find({}). Я не знаю, к чему обращаться. Как добавить в подсловарь новые значения и ключ?
  • Вопрос задан
  • 574 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 1
@lega
Используйте словарь вместо массива:
{
  data1: {key1: value1, key2: value2},
  data2: {key2: value2, key2: value2}
}

db.col.update(match, {$set: {'data2.key2': value2}})

PS: если бы вы привели что у вас там хранится и что нужно получать, можно было бы лучше подобрать структуру и запросы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы