我正在尝试在this useful guide之后创建一个简单的restful API。
然而,这可能是一个可怕的错误(而且不是一个好的非SQL方法),我希望不同的对象存储对其他对象的引用。例如,一个团队有一个ObjectID数组,一个用于球员,一个用于比赛。
class Team(BaseModelExtended):
id: Optional[PydanticObjectId] = Field(None, alias="_id")
name: str
players: List[PydanticObjectId] = []
matches: List[PydanticObjectId] = []
date_added: Optional[datetime]
我希望能够通过填充数组中的id来查找团队中所有球员的名字。我知道Mongoose可以做到这一点,但我不确定PyMongo是否可以做到这一点。我在PyMongo文档中找不到populate方法。此外,我开始意识到这可能是一个糟糕的方法?
任何建议都将不胜感激。
1条答案
按热度按时间4szc88ey1#
pymongo
没有populate
函数。您必须使用$lookup
stage(在populate()
文档中为referenced)创建聚合管道MongoDB在版本〉= 3.2中有类似join的$lookup聚合操作符。
所以,做一些事情,比如:
注意,您可以将
$lookup
与数组一起使用。至于你的另一个问题,那是你自己的选择。但是如果你只有像这些这样的高度结构化的数据,NoSQL解决方案可能不是最好的。