我正在使用mongoDB的meteor实现,目前有一个架构如下:
{
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)何时使用数组与对象更好 - 例如,我的照片列表是当前对象,这应该是一个数组吗?
谢谢。