sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb distinct() implementering i Meteor på serveren?

Ok, efter at have gravet lidt rundt i koden og indset, at mongo lib indeholder native implementeringer af alle de nødvendige metoder, genbrugte jeg aggregate()-løsningen fra https://github.com/meteor/meteor/pull/644

Ligetil ændringer og oversættelse til coffeescript giver følgende uddrag til at indsætte i din serversidekode:

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]

Ulempen er, at du skal definere det for hver ny kollektion, men det er ret ligetil at rette med et andet hack via _.extend eller noget, tror jeg...

PS Det er nu også en smart pakke - mrt add mongodb-aggregation



  1. Hvordan kan jeg bruge mongodump til at dumpe poster, der matcher et bestemt datointerval?

  2. Entity Framework og MongoDb

  3. NodeJS Mongo - Mongoose - Dynamisk samlingsnavn

  4. Redis C# - Brug af Incr-værdi i en transaktion