在 pymongo 中获取嵌入文档的最佳方式?
我在 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
但这是获得单个页面或一般嵌入文档的最佳方式吗?欢迎所有提示或代码片段。
谢谢! 雅鲁斯
I has in MongoDB documents like this:
{
"user": ObjectID("4d71076b26ab7b032800009f")
"pages" : [
{
"name" : "Main",
"content" : [
{
"id" : ObjectId("4d71076b26ab7b052800009f")
},
{
"id" : ObjectId("4d61269b1deb5a3fce000004"),
"link" : "http://example.com"
}
]
}
]}
You can see that the key "pages" is a array with other documents. Now I can query this document with the name of a page and I will get the full document with all pages and other information. I use in python directly pymongo to query the document but now I don't know what the best way is to get a page from the array pages. I think something like this:
def getPage(pageNameWhoINeed):
for page in pages:
if page['name'] == pageNameWhoINeed:
return page
But is this the best way to get a singe page or general a embedded document? All tipps or code snippets are welcome.
Thanks!
Jarus
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的你是对的。在 mongodb 中,您无法加载没有父级的嵌入文档。您可以通过子文档的某些属性加载父文档。
您需要遍历所有嵌入文档来查找所需的页面。
如果您经常需要加载嵌入文档,mb您需要重新设计您的数据库(将页面移动到根集合,但在我看来,您的模式一切都很好)。
Yes you are right. In mongodb you can't load embedded document without parent. You can load parent document by some property of child document.
Than you need to iterate through all embedded documents an find page that you need.
If you often need to load embedded document, mb you need to redesign your database(move pages to the root collection, but it seems to me that all okay with your schema).
请阅读 mongodb 上的检索字段子集网站。
我希望它能帮助你。
Please read Retrieving a Subset of Fields on the mongodb website.
I hope that it will help you.