我在Meteor项目中有两个集合,松散地创建如下:
ItemContainer.insert({
title: title,
items: [],
});
Items.insert({
title: title,
});
每当创建新Item
时,其ID都会添加到items
中的ItemContainer
数组中。
我也有这样的帮手:
Template.body.helpers() {
items() {
const instance = Template.instance();
const containerId = instance.state.get("currentContainer");
const theseItems = ItemContainer.find({ _id: containerId}).items;
return Items.find({ _id: { $in: items } });
}
}
问题是我想按项目数组中的索引对我返回的项目进行排序。因此,当我在浏览器中生成项目列表时,首先显示ID为items[0]
的项目,然后显示items[1]
,依此类推。不幸的是,我在Mongo文档中找不到简单的解决方案。
我可以想到一些方法来做到这一点,比如通过迭代items数组并返回它来构造一个对象,但我必须想象有一种更简单的方法。物理数量也可能增长很多,理论上数千或数万。
有人知道按数组索引排序的简单方法吗?
答案 0 :(得分:0)
通过ItemContainer查找时,您可以尝试按升序对项目进行排序。这样物品的返回顺序正确。
const theseItems = ItemContainer.find({ _id: containerId}).sort({"items.0": 1}).items;