【问题标题】:delete object from nested document in mongodb从 mongodb 的嵌套文档中删除对象
【发布时间】:2021-07-26 17:24:39
【问题描述】:

我在上面有这个带有_iddate 和两个对象的 JSON:sessionDatametaData。我想从每个文档中删除对象metaData 其中"userId":123456

{
    "_id": {
        "$oid": "60feedd4b3aefff2629b93b7"
    },
    "insertionDate": {
        "$date": "2021-07-26T18:15:57.564Z"
    },
    "sessionData": {
        "time": [1364, 1374, 1384],
        "yaw": [0.15, 0.3, 0.45],
        "pitch": [0.36, 0.76, 1.08],
        "roll": [-0.13, -0.25, -0.35],
        "heading": [-3.24, -3.25, -3.17],
        "ax": [-0.42, -0.41, -0.41],
        "ay": [-0.15, -0.13, -0.1],
        "az": [0.9, 0.91, 1],
        "gx": [0, 0, 0],
        "gy": [-0.01, 0, -0.01],
        "gz": [0.02, 0.02, 0.02],
        "mx": [0.26, 0.26, 0.26],
        "my": [0.01, 0.01, 0.01],
        "mz": [-0.04, -0.04, -0.07]
    },
    "metaData": {
        "userId": 123456,
        "gender": "M",
        "ageGroup": "SENIOR",
        "weightKg": 70,
        "heightCm": 175,
        "poolSizeM": 50
    }
}

我的代码:

@app.route('/data/anonymousData/<int:l>', methods = ['POST'])
def makeanonymous(l):    
    result = collection.update_many({}, {"$pull":{ "metaData": {"$in": {"userId": l }}}}, multi=True )    
    t=result.deleted_count
    return f'Deleted {t} documents.' 

【问题讨论】:

    标签: json mongodb object flask document


    【解决方案1】:

    您可以使用$unset 像这样删除对象:

    collection.update_many({
      "metaData.userId": 123456
    },
    {
      "$unset": {
        "metaData": ""
      }
    })
    

    查看this 示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2021-07-03
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 2021-02-13
      • 2014-03-30
      相关资源
      最近更新 更多