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

Как да получите документите въз основа на филтри за дати (седмица, месец и персонализирани дати) в MongoDB?

Може да имате нещо като следване. Използвайте операция за съпоставяне, за да филтрирате. В този пример ви показах подробностите за last_week. Проверих всички сценарии, които споменахте по-горе. И работи добре

[{$match: {
  $expr:{
    $and:[
      {$gt:["$createdAt",new Date(new Date()-14*60*60*24*1000)]},
      {$lt:["$createdAt",new Date(new Date()-7*60*60*24*1000)]}
      ]
  }
}}, {$group: {
  _id: '$userId',
  totalSeen: {
    $sum: {
      $cond: [
        {
          $eq: [
            '$status',
            'seen'
          ]
        },
        1,
        0
      ]
    }
  },
  total: {
    $sum: 1
  }
}}, {$project: {
  _id: 0,
  userId: '$_id',
  notificationPercentage: {
    $multiply: [
      {
        $divide: [
          '$totalSeen',
          '$total'
        ]
      },
      100
    ]
  }
}}]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoDB 4.0 поддръжка на транзакции

  2. Mongoose позволява ли едновременно множество заявки за база данни?

  3. MongoDB $ log10

  4. MongoDB $round срещу $trunc:Каква е разликата?

  5. Сравнете между 2 полета на документ в MongoDB