sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:Jak spočítat pole, pokud jeho hodnota odpovídá podmínce?

Použijte následující agregační kanál:

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
])

To se vrátí pro každý dokument, který nebyl "odeslán e-mailem", jako hodnota log.type , počet prvků pole log které mají log.type hodnota clicked a s časovým razítkem z aktuálního měsíce. Pokud chcete pro měsíc klouzavé 30denní období, změňte $match být dotazem na rozsah s $gt a $lt pokrývající požadované časové období.



  1. Jak změníte uživatelská oprávnění MongoDB?

  2. Rámec Django REST stále reaguje s daty uloženými v mezipaměti, i když máte prázdné klíče redis

  3. Ekvivalent $set MongoDb v ovladači java

  4. Výpočtový dotaz Mongodb--kumulativní násobení