Back to Counting:

Introduction to MongoDB in Python

Donny Winston

Instructor

Field paths

  • expression object ? {field1: <expression1>, ...}
db.laureates.aggregate([
    {"$project": {"prizes.share": 1}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 
                 'prizes': [{'share': '1'}]}
  • expression: 1
db.laureates.aggregate([
    {"$project": {"n_prizes": {"$size": "$prizes"}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 
                  'n_prizes': 1}
  • expression: {"$size": "$prizes"}
  • field path: $prizes
Introduction to MongoDB in Python

Operator expressions

db.laureates.aggregate([
    {"$project": {"n_prizes": {"$size": "$prizes"}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'n_prizes': 1}
  • operator expression: {"$size": "$prizes"}
  • field path: $prizes
db.laureates.aggregate([
    {"$project": {"n_prizes": {"$size": ["$prizes"]}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'n_prizes': 1}
Introduction to MongoDB in Python

One more example: a multi-parameter operator

db.laureates.aggregate([
    {"$project": {"solo_winner": {"$in": ["1", "$prizes.share"]}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'solo_winner': True}
Introduction to MongoDB in Python

Implementing .distinct()

list_1 = db.laureates.distinct("bornCountry")
list_2 = [doc["_id"] for doc in db.laureates.aggregate([
    {"$group": {"_id": "$bornCountry"}}
])]
set(list_2) - {None} == set(list_1)
True
  • $groupmust map _id, which must be unique (like any Mongo document)
  • No $matchbefore $group
    • All distinct "bornCountry" values captured
    • including "no value" (None)
Introduction to MongoDB in Python

How many prizes have been awarded in total?

list(db.laureates.aggregate([
    {"$project": {"n_prizes": {"$size": "$prizes"}}},
    {"$group": {"_id": None, "n_prizes_total": {"$sum": "$n_prizes"}}}
]))
[{'_id': None, 'n_prizes_total': 941}]
  • {"_id": None"}? one document out.
  • $sumoperator acts as accumulator in $groupstage
Introduction to MongoDB in Python

Let's practice!

Introduction to MongoDB in Python

Preparing Video For Download...