MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb distinkte () Implementierung in Meteor auf dem Server?

Ok, nachdem ich einige Zeit im Code herumgegraben und festgestellt hatte, dass mongo lib native Implementierungen aller benötigten Methoden enthält, habe ich die Aggregat()-Lösung von https://github.com/meteor/meteor/pull/644

Unkomplizierte Änderungen und Übersetzungen in Coffeescript ergeben das folgende Snippet, das Sie in Ihren serverseitigen Code einfügen können:

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]

Der Nachteil ist, dass Sie es für jede neue Sammlung definieren müssen, aber das ist ziemlich einfach mit einem anderen Hack über _.extend oder so etwas zu beheben, denke ich ...

PS Es ist jetzt auch ein intelligentes Paket - mrt add mongodb-aggregation