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

MongoDB:Как да преброим поле, ако стойността му отговаря на условие?

Използвайте следния канал за агрегиране:

db.click_log.aggregate([
    { "$match" : { "log.type" : { "$ne" : "emailed" } } }, // get rid of docs with an "emailed" value in log.type and docs not from this month
    { "$unwind" : "$log" }, // unwind to get log elements as separate docs
    { "$project" : { "_id" : 1, "log" : 1, "month" : { "$month" : "$log.utc_timestamp" } } },
    { "$match" : { "log" : "clicked", "month" : <# of month> } }, // get rid of log elements not from this month and that aren't type clicked
    { "$group" : { "_id" : "$_id", "count" : { "$sum" : 1 } } } // collect clicked elements from same original doc and count number
])

Това ще върне за всеки документ, който не е „изпратен по имейл“ като стойност на log.type , броя на елементите на масива log които имат log.type стойност clicked и с времева щампа от текущия месец. Ако искате плъзгащ се 30-дневен период за месец, променете $match да бъде заявка за диапазон с $gt и $lt покриващи желания период от време.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. как да създадете индекс от mongoose в еластично търсене в node,expressjs

  2. Mongoose:Населете населено поле

  3. MongoDb база данни срещу колекция

  4. Mongoose findOneAndUpdate Актуализиране на множество полета

  5. Spring Boot и как да конфигурирам подробности за връзката с MongoDB?