2013-03-28 86 views
3

我有以下代碼,我試圖更新列表字段中的嵌入式文檔。Mongoengine更新嵌入式文檔

store = store_service.get_store_from_product_id(product_id) 
got_product, idx = get_product_from_store(store, product_id) 

product = Product() 
product.pid = got_product.pid 
product.display_name = display_name 
product.description = description 
product.rank = rank 
product.price = price 
product.categories = categories 
product.properties = properties 

store.catalog.products[idx] = product 

print store.catalog.products[idx].__unicode__() 

store.save() 

當我打印出我的產品時,它具有正確的值,但是當我保存它時,它不會持續。沒有錯誤被拋出。任何想法,我可能做錯了什麼?

回答

1

store.catalog.products[idx] = product可應用於DictField()。對於ListField()。你可以試試:

store.catalog.products = [product] 

store.catalog.products.append(product) 

而你需要調用保存對象:

store.save() 

還有就是atomic updates它可以在其他情況下幫助的可能性:

Store.objects(id='123400000').update_one(push__catalog__products=product)