Meteor有一个独特的查询集合的方法吗?

11

我想在我的集合中返回不同的字段。我知道这些是mongo运算符的文档,但我对查询语言不够熟悉,不知道是否可能实现?

Meteor.publish("distinctCollection", function() {
    return Collection.find({ ... }, fields: { "myField": 1 });
});

请查看这个简洁的解决方案:[链接]https://dev59.com/ZGAg5IYBdhLWcg3wu8_o - Phemelo Khetho
1个回答

10
Collection.find({}).distinct('myField', true);

使用时,请将以下内容放在 [项目]/client/lib/a.js 中:

LocalCollection.Cursor.prototype.distinct = function (key,random) {
  var self = this;

  if (self.db_objects === null)
    self.db_objects = self._getRawObjects(true);
  if (random)
    self.db_objects = _.shuffle(self.db_objects);
  if (self.reactive)
    self._markAsReactive({ordered: true,
                          added: true,
                          removed: true,
                          changed: true,
                          moved: true});
  var res = {};
  _.each(self.db_objects,function(value){

    if(!res[value[key]]){
        res[value[key]] = value;
    }
  });
  return _.values(res);
};

似乎self._markAsReactive()不再起作用了。正在尝试深入挖掘并找出它现在的名称。 - wizonesolutions
2
它被称为“_depend”,我认为,但它并没有像我期望的那样工作。不像Mongo的distinct。我只是打算自己动手做。 - wizonesolutions
LocalCollection.Cursor 对我来说未定义。(是的,我替换了 LocalCollection - Jonatan Littke
@JonatanLittke 在发布0.6.5.1版本后,所有全局变量都被放到了Packages对象中。你可以通过输入Package.minimongo.LocalCollection.Cursor来访问LocalCollection。 - Kuba Wyrobek
4
0.6.5.1版本之后上述解决方案不再适用。请查看以下链接: https://github.com/jhoxray/meteor-mongo-extensions 或 Meteorite上的包:https://atmosphere.meteor.com/package/mongodb-aggregation - Kuba Wyrobek
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接