sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb distinct() implementering i Meteor på servern?

Okej efter lite grävande runt koden och insett att mongo lib innehåller inbyggda implementeringar av alla nödvändiga metoder återanvände jag aggregate()-lösningen från https://github.com/meteor/meteor/pull/644

Enkla ändringar och översättning till coffeescript ger följande kodavsnitt att lägga till din serverkod:

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]

Nackdelen är att du måste definiera det för varje ny kollektion men det är ganska enkelt att fixa med ett annat hack via _.extend eller något antar jag...

PS Det är nu också ett smart paket - mrt add mongodb-aggregation



  1. Unik begränsning med två fält i MongoDB

  2. MongoDB fulltextsökning - matchande ord och exakta fraser

  3. Hur får man åtkomst till MongoDB Instance 4.2?

  4. Hur man hittar mongodokument med samma fält