【问题标题】:find & update one object inside array in mongodb python [duplicate]在mongodb python中查找并更新数组内的一个对象[重复]
【发布时间】:2020-10-15 20:43:25
【问题描述】:

我正在尝试 db.collection.find() 我想找到带有 docId:'sparksLog' 的文档,然后在其中找到 'alerts' 然后 object2 具有图像中突出显示的时间戳 (1602579600000),然后将最后一个字段值(有效:真)更新为(有效:假)

我用的是pymongo,python3.8

{
    "docId": "sparksLog",
    "alerts": [{
        "symbol": "ATOMUSDT",
        "candleDate": {
            "$date": "2020-10-13T03:30:00.000Z"
        },
        "spotDate": {
            "$date": "2020-10-14T22:36:56.795Z"
        },
        "timeStamp": 1602559800000,
        "alertPrice": 5.925,
        "side": "buy",
        "indicatorName": "Q1200",
        "currentPrice": 5.925,
        "changePercent": 0,
        "accuracy": 59,
        "forecast": 7.94,
        "rating": 5.9,
        "valid": true
    }, {
        "symbol": "ATOMUSDT",
        "candleDate": {
            "$date": "2020-10-13T09:00:00.000Z"
        },
        "spotDate": {
            "$date": "2020-10-14T22:36:57.416Z"
        },
        "timeStamp": 1602579600000,
        "alertPrice": 6.055,
        "side": "sell",
        "indicatorName": "Q140",
        "currentPrice": 6.055,
        "changePercent": 0,
        "accuracy": 59,
        "forecast": -3.25,
        "rating": 5.9,
        "valid": true
    }]
}

【问题讨论】:

  • 能否请您编辑您的帖子并添加 json 格式的集合而不是图像?
  • 已更新,提前致谢

标签: python mongodb


【解决方案1】:
collection.update_one({
  "docId":'sparksLog'},
  {"$set": { 'alerts.$[t].valid':False}},
  array_filters=[{"t.timeStamp": 1602579600000}])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    相关资源
    最近更新 更多