通过数组中的索引命令流星查找结果

时间:2016-06-17 13:59:05

标签: mongodb meteor

我在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数组并返回它来构造一个对象,但我必须想象有一种更简单的方法。物理数量也可能增长很多,理论上数千或数万。

有人知道按数组索引排序的简单方法吗?

1 个答案:

答案 0 :(得分:0)

通过ItemContainer查找时,您可以尝试按升序对项目进行排序。这样物品的返回顺序正确。

const theseItems = ItemContainer.find({ _id: containerId}).sort({"items.0": 1}).items;