Mongodb 模式结构 - 推入和弹出

0 投票
1 回答
637 浏览
提问于 2025-04-16 11:06

我想要一个类似下面的结构来存储我的数据:

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

(1) 每个 foo 对象都是有着相同内部结构的字典,所以我理想中是在 guid 下面有一个单独的字典,可以在里面添加更多的数据,但这似乎不太可能(或者说是可以的?)

(2) 我在处理数据时遇到困难 - 我不太确定怎么写查询才能只从 name1pop 出一个特定的 guid

我在使用 pymongo,如果这有帮助的话。

1 个回答

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))

然后你可以获取你的 Name 对象,像处理普通对象一样遍历它的属性,删除和弹出 Guids,最后输入 Name.save() 来保存。

撰写回答