【发布时间】:2013-05-25 07:01:46
【问题描述】:
我正在使用 mongoDB 的流星实现,目前的架构如下:
{
photoalbum 1:
{
description: album,
title: xyz,
photos:
{
photo 1:
{
description: photo,
photodata:
{
title:xyz,
url:...,
tags:xyz
}
},
photo 2:
{....},
photo 3:
{....},
}
},
photoalbum 2:
{
description: album,
title: xyz,
photos:
{
photo 1:
{....},
photo 2:
{....},
photo 3:
{....},
}
}
}
我实际上正在尝试做的是将照片数组/对象嵌套在其父相册中。我这样做的逻辑是,我希望能够返回特定集合中的所有照片,并且将相关照片嵌套在一起似乎很直观。
我的问题归结为:
1) 这种架构设计是否可行 - 还是过于嵌套和复杂?例如,我是否应该将照片与集合顶层的集合混合在一起?
2) 如何构造 database.find() 操作以仅返回属于某个集合的照片?我以为我可以在某个父级别(例如 {description:"album"} 中搜索特定类型的项目(例如 {description:"photo"}),但我还没有弄清楚这实际上是如何工作的. 是否必须在每张照片中嵌入相册标识符,然后查询与该标识符匹配的照片?
3) 什么时候使用数组而不是对象更好 - 例如,我的照片列表是当前对象,这应该是数组吗?
谢谢。
【问题讨论】:
-
您的相册和照片可能应该在一个数组中。您可能遇到的一个问题是正确查询数据。查询数组元素并不难,但确实需要您稍微更改一下查询。
-
您能否给出第 2 项的更好/更清晰的示例(并使用文本 @vinipsmaker 发表评论,然后我会收到通知,我将能够完成我的答案)?跨度>
-
@vinipsmaker - 我一直在尝试使用类似于以下 collectionName.find({setID:"number"}) 的内容进行查询...我一直在尝试返回设置的结果到一个变量,然后使用点符号来检索嵌套照片的数据。它还没有工作,我还有更多的调查要做......理想情况下,我想将特定集合的照片数组返回到一个对象,然后使用把手模板中的#each 遍历它们。谢谢。