0

我创建了一个本地 minimongo 集合,我想将集合中的每个项目与所有其他项目(组合,而不是排列)进行比较。如果它是一个数组,它看起来像这样:

for (var i = 0; i < coordCount - 1; i++) {
  for (var j = i + 1; j < coordCount; j++) {
    console.log(i,j);
  }
}

minimongo可以做到这一点吗?我的第一个想法是使用hasNext()next()但那些不存在。然后我认为我可以aggregate对独特的组合进行分组,但这在客户端上也不存在。

4

1 回答 1

0

有一个 Cursor.forEach() 方法可以遍历您的集合,这可能会导致正确的方向(请参见此处:http ://docs.meteor.com/#/full/foreach ),但在您的情况下,您需要更多. 也许这会有所帮助:

这就是 forEach 的工作原理:

// sort your cursor to get always reproducable results
var items = Items.find({}, {sort: {someprop: 1}});
var count = Items.count();
items.forEach(function (item, idx, cursor) {
  // item is your document
  // idx is a 0 based index
  // cursor is the.. cursor
  ...
  // break if idx >= count - 1
});

这可能是一个解决方案(虽然不是很优雅并且可能会占用大量内存)

// sort your cursor to get always reproducable results
var items = Items.find({}, {sort: {someprop: 1}}).fetch();

_.each(items, function (item, idx) {
  // item is your document
  // idx is a 0 based index
  if (idx >= items.length - 1) {
    return;
  }

  yourCompareMethod(item, items[idx + 1]);
});
于 2015-02-21T12:54:50.373 回答