【问题标题】:mongodb change streams - pymongomongodb 更改流 - pymongo
【发布时间】:2020-12-27 01:03:44
【问题描述】:

我正在尝试使用 pymongo 更改流来检查我的收藏中的更新。它工作并返回更新的集合。

pipeline = [{
    '$match': {'operationType': 'update'},
}
]

输出 bson 是

{
  '_id': {
    '_data': '825FE6C622000000012B022C0100296E5A1004731D2D44381F4405B1C7808CE45703F046645F696400645FE58A91DAFF726006C3D1E90004'
  },
  'operationType': 'update',
  'clusterTime': Timestamp(1608959522,
  1),
  'ns': {
    'db': 'iec',
    'coll': 'Substation'
  },
  'documentKey': {
    '_id': ObjectId('5fe58a91daff726006c3d1e9')
  },
  'updateDescription': {
    'updatedFields': {
      'College': [
        {
          'name': 'C1',
          'Student': [
            {
              'name': 'S1',
              'rank': 1

            },
            {
              'name': 'S2',
              'rank': 1
            }
          ]
        }
      ]
    },
    'removedFields': [
      
    ]
  }
}

但我不想要那些额外的字段,如操作类型、集群时间等。我只想要作为学生详细信息的 College 数组。如何更改我的管道以实现?

谢谢

【问题讨论】:

    标签: mongodb mongodb-query pymongo


    【解决方案1】:

    您可以在匹配后添加项目阶段以隐藏您需要的字段:

    pipeline = [{ '$match': {'operationType': 'update'}} , {'$project': { 'operationType':0 , _id:0 , 'clusterTime':0    } }]
    

    【讨论】:

    • {'$project': { '_id': 0 , 'updateDescription.updatedFields.College': 1}}可能更接近。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2022-11-04
    • 2021-05-06
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多