Introduction to MongoDB in Python
Donny Winston
Instructor
{field1: <expression1>, ...}
db.laureates.aggregate([
{"$project": {"prizes.share": 1}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'),
'prizes': [{'share': '1'}]}
1
db.laureates.aggregate([
{"$project": {"n_prizes": {"$size": "$prizes"}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'),
'n_prizes': 1}
{"$size": "$prizes"}
$prizes
db.laureates.aggregate([
{"$project": {"n_prizes": {"$size": "$prizes"}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'n_prizes': 1}
{"$size": "$prizes"}
$prizes
db.laureates.aggregate([
{"$project": {"n_prizes": {"$size": ["$prizes"]}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'n_prizes': 1}
db.laureates.aggregate([
{"$project": {"solo_winner": {"$in": ["1", "$prizes.share"]}}}
]).next()
{'_id': ObjectId('5bd3a610053b1704219e19d4'), 'solo_winner': True}
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
$group
must map _id
, which must be unique (like any Mongo document)$match
before $group
None
)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.$sum
operator acts as accumulator in $group
stageIntroduction to MongoDB in Python