【发布时间】:2016-02-12 23:11:23
【问题描述】:
我正在实现一个相册,并希望有一个优雅的解决方案来存储其图像的顺序。 Album 模型包含对图像的引用数组,如下所示:
// Example album
{
_id: 12345
images: [ObjectId(1), ObjectId(2), ObjectId(3)]
}
// Example image
{
_id: 1
title: My Picture
author: Me
}
我试图弄清楚如何处理数据库中的订单更新。例如,假设我想从以下位置更新图像数组:
[ObjectId(1), ObjectId(2), ObjectId(3)]
到
[ObjectId(3), ObjectId(1), ObjectId(2)]
我想知道 1) 我是否可以通过更新直接重新组织引用数组,或者 2) 如果可以,我如何才能实际访问数组中的每个元素以指示新顺序。
实际上,这种解决方案可能毫无用处,因为数组可以异步填充。另一种解决方案是完全忽略我的要求,并单独存储每个图像的顺序,如下所示:
// Image
{
_id: 1
title: My Picture
author: Me
position: 2 // like this
}
这样,当我异步拉下一组图像时,我所要做的就是按每个图像的position 字段排序。
此策略的一个缺点是,随着图像数量变得足够大,重新排序将变得非常昂贵。将 100 长度数组的最后一个元素移到最开始需要我更新数据库中每个图像的位置值。
如果您有任何建议,请告诉我!
【问题讨论】:
标签: javascript arrays mongodb sorting database