2011-02-02 91 views
0

我想有類似下面的架構集合:MongoDB的模式結構 - push和pop

name1: 
- guid1 : [{ foo1}, {foo2}, .. {foo n}] 
- guid2 : [{ foo1}, {foo2}, .. {foo n}] 

(1) 每個foo對象都具有相同的內部結構的字典 - 和所以最好有我會低於​​一個字典,我可以添加額外的數據 - 但是這似乎並不可能(?抑或是)

(2) 我與能夠pop數據掙扎 - 我不知道如何將查詢結構化爲只有pop單一​​關閉name1

我使用pymongo,如果相關。

+0

「流行」是什麼意思?如果它是mongo的$ pop,那麼它是刪除數組的第一個/最後一個元素並且有對象(字典)的操作。 – pingw33n 2011-02-02 20:08:46

+0

我剛剛意識到,$流行是工作正常(發佈一些小的副標題爲我的代碼),但我期待流行返回價值刪除,它沒有,由設計.. – malangi 2011-02-02 20:28:42

回答

1

不要以你的方式拋出扳手,但你有沒有使用MongoEngine?它位於pymongo之上,並且使得mongoDB更加愉快。一探究竟。

所以你mongoengine聲明是這樣的:

from mongoengine import *       

class Foo(EmbeddedDocument):     
    #Declare your Foo properties here 

class Guid(EmbeddedDocument):     
    name = StringField()     
    foos = ListField(EmbeddedDocumentField(Foo))          

class Name(Document):       
    title = StringField(required=True)          
    guids = ListField(EmbeddedDocumentField(Guid)) 

然後,你可以通過它的屬性很好的對象抓住你的姓名和循環,去除和流行的GUID,然後鍵入Name.save()