如何将元素推入MongoDB数据库中对象内的数组?

2024-10-03 17:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我是MongoDB的新手,我正在尝试找出如何将元素推入对象内部的数组中。以下是数据库:

{
    "_id": {
        "$oid": "605cee2f08588cb6263c33a4"
    },
    "userID": "9346",
    "firstName": "James",
    "sessionsLog": {
        "date": [],
        "timestamp": [],
        "duration": []
    }
},
    {
    "_id": {
        "$oid": "605cee825ef711180adbc141"
    },
    "userID": "4778",
    "firstName": "Rob",
    "sessionsLog": {
        "date": [],
        "timestamp": [],
        "duration": []
    }
}

我想在Rob的“日期”数组中加入一个日期:2021年3月30日

将此新日期推入日期数组的操作是什么

这就是我尝试过的:

import pymongo
myclient = pymongo.MongoClient("...")
mydb= myclient["myDatabase"]
users = mydb["Users"]

userID = '4778'
dateToPush = '3/30/2021'
allUsers = users.find({}, {'_id': 1, 'userID': 1, 'sessionsLog': 1})
for u in allUsers:
    if u.get('userID') == userID:
        users.update_one(
            {'userID': u.get('userID')},
            {'$push': {'sessionsLog'['date']: dateToPush}}
        )

Tags: iddate数组firstnameuserstimestampdurationoid
1条回答
网友
1楼 · 发布于 2024-10-03 17:19:17

https://docs.mongodb.com/manual/reference/operator/update/push/

对查询中的嵌套对象使用.

改变

'$push': {'sessionsLog'['date']: dateToPush}

'$push': {'sessionsLog.date': dateToPush}

演示-https://mongoplayground.net/p/30GIvWkHDV1

db.collection.update({
  "userID": "9346"
},
{
  $push: {
    "sessionsLog.date": { a: 1, b: 2 }
  }
})

相关问题 更多 >