Я разработчик PHP, пытающийся решить проблему http://docs.mongodb.org/ecosystem/use-cases/category-hierarchy/, но я мало знаю о Python.Некоторые вопросы о примере использования иерархии категорий MongoDb
Мой первый вопрос:
for cat in db.categories.find(
{'ancestors._id': bop_id},
{'parent_id': 1}):
build_ancestors_full(cat['_id'], cat['parent_id'])
Где 'parent_id' взялось? Разве это не значит быть «родителем»?
Мой второй вопрос:
def build_ancestors_full(_id, parent_id):
ancestors = []
while parent_id is not None:
parent = db.categories.find_one(
{'_id': parent_id},
{'parent': 1, 'name': 1, 'slug': 1, 'ancestors':1})
parent_id = parent.pop('parent')
ancestors.append(parent)
db.categories.update(
{'_id': _id},
{'$set': { 'ancestors': ancestors } })
Я был бы признателен за объяснение псевдо (или PHP эквивалент) этой вспомогательной функции, в основном следующие строки:
parent_id = parent.pop('parent')
ancestors.append(parent)
Спасибо!
ОБНОВЛЕНИЕ & Ответ:
Две ошибки в примерах кодов:
Первый 'parent_id' => должно быть 'родитель'
Второй
{ 'родитель ': 1,' name ': 1,' slug ': 1,' ancestors ': 1})
=> поле предков должно быть _id
У меня больше проблем с функциональной частью. В примере никогда не существует понятия parent_id, это опечатка, я думаю. также, если я его правильно понимаю, parent.pop ('parent') оставляет родительский элемент как массив с именами ключей, slug и предками. Не предполагается ли, что ключ предков здесь _id? – Iano
Часть вашего примера я получаю :) – Iano
parent - это словарь в python, поэтому parent.pop ('parent') удаляет родительский ключ из словаря и возвращает значение. – user602525