Được rồi, sau khi tìm hiểu mã và nhận ra mongo lib chứa các triển khai gốc của tất cả các phương thức cần thiết, tôi đã sử dụng lại giải pháp tổng hợp () từ https://github.com/meteor/meteor/pull/644
Các thay đổi đơn giản và bản dịch sang coffeescript cung cấp đoạn mã sau để đưa vào mã phía máy chủ của bạn:
path = __meteor_bootstrap__.require("path")
MongoDB = __meteor_bootstrap__.require("mongodb")
Future = __meteor_bootstrap__.require(path.join("fibers", "future"))
myCollection = new Meteor.Collection "my_collection"
#hacky distinct() definition from https://github.com/meteor/meteor/pull/644
myCollection.distinct = (key)->
future = new Future
@find()._mongo.db.createCollection(@_name,(err,collection)=>
future.throw err if err
collection.distinct(key, (err,result)=>
future.throw(err) if err
future.ret([true,result])
)
)
result = future.wait()
throw result[1] if !result[0]
result[1]
Nhược điểm là bạn phải xác định nó cho mọi bộ sưu tập mới nhưng điều đó khá đơn giản để khắc phục bằng một bản hack khác thông qua _.extend hoặc thứ gì đó mà tôi đoán ...
PS Bây giờ nó cũng là một gói thông minh - mrt add mongodb-aggregation