当我在集合上使用watch()
函数时,我正在传递一个聚合来过滤通过的内容。我能够使operationType
正常工作,但我也只想包含city
字段等于Vancouver
的文档。我正在使用的当前语法不起作用:
change_stream = client.mydb.mycollection.watch([
{
'$match': {
'operationType': { '$in': ['replace', 'insert'] },
'fullDocument': {'city': {'$eq': 'Vancouver'} }
}
}
])
作为参考,这就是我正在汇总的字典的样子:
{'_id': {'_data': '825F...E0004'},
'clusterTime': Timestamp(1595565179, 2),
'documentKey': {'_id': ObjectId('70fc7871...')},
'fullDocument': {'_id': ObjectId('70fc7871...'),
'city': 'Vancouver',
'ns': {'coll': 'notification', 'db': 'pipeline'},
'operationType': 'replace'}
答案 0 :(得分:1)
我发现我只需要使用一个点即可访问嵌套字典:
change_stream = client.mydb.mycollection.watch([
{
'$match': {
'operationType': { '$in': ['replace', 'insert'] },
'fullDocument.city': 'Vancouver' }
}
}
])