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

Агрегиране по дата в Mongodb

Успях да го поправя, според коментара на @chridam. Благодаря отново!

Пиша решението по-долу, за всеки случай, ако някой се сблъска със същия проблем като мен.

Промених заявката си така, че станах:

 var group = collection.Aggregate()
                       .Match(filter)
                       .Group(new BsonDocument { { "_id", new BsonDocument { { "month", new BsonDocument("$month", "$createddate.DateTime") }, { "day", new BsonDocument("$dayOfMonth", "$createddate.DateTime") }, { "year", new BsonDocument("$year", "$createddate.DateTime") } } }, { "count", new BsonDocument("$sum", 1) } })
                       .ToListAsync().Result;

Това ми даде сериализиран обект. След това го десериализирах в персонализирания клас, който имах:

var grouped = group.Select(g => BsonSerializer.Deserialize<RootObject>(g));

Ето персонализираната дефиниция на клас, която ще бъде малко излъскана:

public class Id
{
    public int month { get; set; }
    public int day { get; set; }
    public int year { get; set; }
}

public class RootObject
{
    public Id _id { get; set; }
    public int count { get; set; }
}

Надявам се това да е полезно. Благодаря! :)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам $elemMatch върху проекцията на агрегата?

  2. Вмъкнете стойност на конкретна позиция в масив в MongoDB

  3. Генерирайте PDF с библиотека JasperReport и MongoDB

  4. Проблем с производителността на MongoDB:Единична огромна колекция срещу множество малки колекции

  5. MongoError:имената на бази данни не могат да съдържат знака „ “ при използване на mongoosejs за свързване с mLab