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

Агрегирайте резултатите от MongoDB по дата на ObjectId

Актуализация:Има вграден начин да направите това сега, вижте https://stackoverflow.com/a /51766657/295687

Няма начин да постигнете това, което питате, с рамката за агрегиране на mongodb, защото няма оператор за агрегиране, който да превърне ObjectId в нещо подобно на дата (има JIRAticket , все пак). Трябва обаче да можете да постигнете това, което искате, като използвате map-reduce:

// map function
function domap() {
    // turn ObjectId --> ISODate
    var date = this._id.getTimestamp();
    // format the date however you want
    var year = date.getFullYear();
    var month = date.getMonth();
    var day = date.getDate();

    // yields date string as key, entire document as value
    emit(year+"-"+month+"-"+day, this);
}

// reduce function
function doreduce(datestring, docs) {
    return {"date":datestring, "docs":docs};
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Заседнал при зареждане с мангуста

  2. MongoDb:Предимство от използването на ObjectID спрямо низ, съдържащ идентификатор?

  3. Node.js MongoDB collection.find().toArray не връща нищо

  4. Mongodb връща стара колекция

  5. MongoDB с Mongoid в Rails – геопространствено индексиране