我使用MongoDB作爲Python Web應用程序(PyMongo + Bottle)的後端數據庫。用戶可以上傳文件並選擇「標記」這些文件。這些標籤按照以下方式存儲在文檔中:將項目添加到PyMongo中的MongoDB文檔數組而不重新插入
{
"_id" : ObjectId("561c199e038e42b10956e3fc"),
"tags" : [ "tag1", "tag2", "tag3" ],
"ref" : "4780"
}
我試圖讓用戶在任何文檔中追加新標籤。我想出了這樣的事情:(。FYI; ref
關鍵始終是唯一的,這可能很容易被_id
以及)
def update_tags(ref, new_tag)
# fetch desired document by ref key as dict
document = dict(coll.find_one({'ref': ref}))
# append new tag
document['tags'].append(new_tag)
# re-insert the document back into mongo
coll.update(document)
好像應該有一個辦法只有更新「標籤」值直接不用拉回整個文件並重新插入。我在這裏錯過了什麼嗎?
任何想法是極大的讚賞:)
兩者有什麼區別?只是返回值(文檔vs UpdateResult對象)?你什麼時候使用其中一種? – stackoverflowwww
如果'標籤'字段不存在會發生什麼? –
如果'tags'字段不存在,則會創建它。 @GauravOjha – styvane