MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

внедряване на mongodb distinct() в Meteor на сървъра?

Добре, след известно ровене в кода и осъзнаване, че mongo lib съдържа собствени реализации на всички необходими методи, използвах повторно решението aggregate() от https://github.com/meteor/meteor/pull/644

Директните промени и превод в coffeescript дават следния фрагмент, който да поставите във вашия код от страна на сървъра:

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]

Недостатъкът е, че трябва да го дефинирате за всяка нова колекция, но това е доста лесно да се коригира с друг хак чрез _.extend или нещо подобно, предполагам...

PS Вече е и интелигентен пакет - mrt add mongodb-aggregation



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Функцията Mongo Find() няма да изключи _id

  2. Обект #<MongoClient> няма метод 'open'

  3. съвпадение на масив mongodb

  4. Mongoose - Една и съща схема за различни колекции в (MongoDB)

  5. MongoDB $anyElementTrue