sql >> Database >  >> NoSQL >> MongoDB

mongodb distinct() implementatie in Meteor op de server?

Ok na wat graven in de code en het besef dat mongo lib native implementaties van alle benodigde methoden bevat, heb ik de aggregate()-oplossing hergebruikt van https://github.com/meteor/meteor/pull/644

Eenvoudige wijzigingen en vertaling naar coffeescript geeft het volgende fragment om in uw server-side code te plaatsen:

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]

Nadeel is dat je het voor elke nieuwe collectie moet definiëren, maar dat is vrij eenvoudig op te lossen met een andere hack via _.extend of zoiets denk ik...

PS Het is nu ook een slim pakket - mrt add mongodb-aggregation



  1. Spring mongo repository slice

  2. Spring Data MongoDB - negeer lege objecten

  3. Spring mongodb krijgt ID van ingevoegd item na Opslaan

  4. Deze LEFT() SQL bouwen in MongoDB Query?