我在MongoDB文件中有这样的:
{
"user": ObjectID("4d71076b26ab7b032800009f")
"pages" : [
{
"name" : "Main",
"content" : [
{
"id" : ObjectId("4d71076b26ab7b052800009f")
},
{
"id" : ObjectId("4d61269b1deb5a3fce000004"),
"link" : "http://example.com"
}
]
}
]}
您可以看到键“pages”是包含其他文档的数组。现在我可以使用页面名称查询此文档,我将获得包含所有页面和其他信息的完整文档。我在python中使用直接pymongo来查询文档,但现在我不知道从数组页面获取页面的最佳方法是什么。我想是这样的:
def getPage(pageNameWhoINeed):
for page in pages:
if page['name'] == pageNameWhoINeed:
return page
但这是获得单页或一般嵌入式文档的最佳方式吗?我们欢迎所有的tipps或代码片段。
谢谢! Jarus
答案 0 :(得分:2)
是的,你是对的。在mongodb中,如果没有父级,则无法加载嵌入式文档。您可以通过子文档的某些属性加载父文档。
pages.find({"pages.name", "Main"}); //should load all document that contains pages collection and at least one item in embedded collection with name 'Main'.
您需要遍历所有嵌入式文档,找到您需要的查找页面。
如果您经常需要加载嵌入式文档,那么您需要重新设计数据库(将页面移动到根集合,但在我看来,您的架构都可以。)
答案 1 :(得分:0)
请阅读mongodb网站上的Retrieving a Subset of Fields。
我希望它会对你有所帮助。