2013-09-22 4 views
2

Я пытаюсь создать простую базу данных в PyMongo. Он создает триграммы и использует их как ключи. Значения - это слова, в которых встречается триграмма; так:

{"trigram":"#ha","words":["hahaha","harley","mahalo"]} etc. 

Я зацикливания через множество триграмм, которые найдены и создавать их в качестве ключей. Проблема заключается в добавлении новых слов в систему ... Я не могу получить #addToSet (это то, что мне нужно, возможно) работать!

db["Terms"].update({ 
    "trigram": trigram, 
    {"$addToSet": {"words":word} 
}) 

Это фрагмент кода. Он должен добавить «слово» к массиву «слов». Но, в конце концов, база данных остается пустой, не возвращая никаких ошибок.

Извините, если я довольно расплывчато здесь. Что мне делать?

С уважением и благодарностью.

+1

Это работает: 'db [" Terms "]. Update ({" trigram ":" # ha ", {" $ addToSet ": {" words ": word}})'? – alecxe

+0

Он работает в том смысле, что он не дает сообщений об ошибках. Но он не делает то, что я хочу ... (он ничего не делает) –

ответ

10

Если вы не используете опцию upsert, то update будет изменять только существующие документы, а не создавать их. Попробуйте вместо этого:

db["Terms"].update(
    { "trigram":trigram }, 
    { "$addToSet":{"words":word} }, 
    upsert=True) 

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

1

попробовать это db["Terms"].update({ "trigram": "#ha"}, {"$addToSet": {"words":"word"} })

запомнить вам нужно обновление, поэтому необходимо Separe найти{ "trigram": "#ha"}, обновление{"$addToSet": {"words":"word"} } и добавить слова в " ".

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