将minimongo集合中的所有项目相互比较

时间:2015-02-21 01:51:20

标签: javascript meteor minimongo

我创建了一个本地的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并对特殊组合进行分组,但客户端上也不存在。

1 个答案:

答案 0 :(得分: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]);
});