Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MongoDB-如何在一次操作中更新单个文档的多个数组?可能吗?_Python_Mongodb - Fatal编程技术网

Python MongoDB-如何在一次操作中更新单个文档的多个数组?可能吗?

Python MongoDB-如何在一次操作中更新单个文档的多个数组?可能吗?,python,mongodb,Python,Mongodb,我有一个大文件,里面充满了重复的$push操作,我想简化这些操作。我当前的解决方案运行良好,如下所示: seshID = '1234' seshDate = '3/30/2021' seshTimestamp = '1:00 PM' seshDuration = 60 seshEfficiency = 75 seshAbility = 80 users.update_one({'userID': seshID}, {'$push': {'sessionsLog.date': seshD

我有一个大文件,里面充满了重复的
$push
操作,我想简化这些操作。我当前的解决方案运行良好,如下所示:

seshID = '1234'
seshDate = '3/30/2021'
seshTimestamp = '1:00 PM'
seshDuration = 60
seshEfficiency = 75
seshAbility = 80

users.update_one({'userID': seshID},
    {'$push': {'sessionsLog.date': seshDate}})
users.update_one({'userID': seshID},
    {'$push': {'sessionsLog.timestamp': seshTimestamp}})
users.update_one({'userID': seshID},
    {'$push': {'sessionsLog.duration': seshDuration}})
users.update_one({'userID': seshID},
    {'$push': {'sessionsLog.efficiency': seshEfficiency}})
users.update_one({'userID': seshID},
    {'$push': {'sessionsLog.ability': seshAbility}})
在我的实际工作文件中,有许许多多的字段和数组,所以它开始变得丑陋和难以管理,但至少到目前为止它还可以工作

我想使用一个
update
操作来完成同样的任务,只是为了可读性。我对Pymongo或MongoDB了解不够,不知道这是否可行,或者使用什么操作。我希望有人能提供解决方案。这是我尝试过的(加上其他类似的方法),但到目前为止运气不佳:

users.update({'userID': seshID},
    {'$push': {{'sessionsLog.date': seshDate},
               {'sessionsLog.timestamp': seshTimestamp},
               {'sessionsLog.duration': seshDuration},
               {'sessionsLog.efficiency': seshEfficiency},
               {'sessionsLog.ability': seshAbility}}
    })

您的语法几乎正确,请尝试:

users.update({'userID': seshID},
    {'$push': {'sessionsLog.date': seshDate,
               'sessionsLog.timestamp': seshTimestamp,
               'sessionsLog.duration': seshDuration,
               'sessionsLog.efficiency': seshEfficiency,
               'sessionsLog.ability': seshAbility}
    })

您的语法几乎正确,请尝试:

users.update({'userID': seshID},
    {'$push': {'sessionsLog.date': seshDate,
               'sessionsLog.timestamp': seshTimestamp,
               'sessionsLog.duration': seshDuration,
               'sessionsLog.efficiency': seshEfficiency,
               'sessionsLog.ability': seshAbility}
    })

我知道我很接近,谢谢!我知道我很接近,谢谢!永远不要将日期/时间值存储为字符串,这是一个设计缺陷。使用适当的
Date
对象。永远不要将日期/时间值存储为字符串,这是一个设计缺陷。使用适当的
日期
对象。