【发布时间】:2020-04-28 19:23:18
【问题描述】:
我需要帮助 mongoDB 查询。这是我的收藏。 mongodb中的播放列表
JukeBox Collection
{
[
roomName : 'room1',
playlist :
[{ Filename: 'file1.mp3',
Filekeywords: 'party music, couples'
},
{ Filename: 'file2.mp3',
Filekeywords: 'fine dining, family , kids'
},
{ Filename: 'file1.mp3',
Filekeywords: 'elderly, family'
}]
},
roomName : 'room2',
playlist : [{
...
}...
]
}
如果文件名与对象字段中的指定匹配,我需要向数组字段“PlayPosition:15 #seconds”的一个对象插入一个字段。更新后的预期集合:
JukeBox Collection
{
[
roomName : 'room1',
playlist :
[{ Filename: 'file1.mp3',
Filekeywords: 'party music, couples',
},
{
Filename: 'file2.mp3',
Filekeywords: 'fine dining, family,kids'
PlayPosition: 15 #seconds
},
{ Filename: 'file1.mp3',
Filekeywords: 'elderly, family',
}]
我想遍历数组字段,找到匹配的字段(文件名),如果不存在则插入'PlayPosition'键+值。如果存在,它应该更新该字段。我的假设是我需要使用 update_one,我应该使用“$addToSet”来实现这一点。我的实用功能如下:
UpdateCurrentPlayStatus(filename = "file2.mp3", position_in_seconds=15):
#What should be my query?
JukeBoxUpdate( {roomName: 'room1'},
{
"$addToSet":{
"playlist.$": {
"Filename": filename,#file2.mp3 . Does this filter
"PlayPosition": position_in_seconds
}
}
}
它给了我以下异常:pymongo.errors.WriteError: 位置运算符没有从查询中找到所需的匹配项。
我无法弄清楚查询出了什么问题。请帮忙。
【问题讨论】:
标签: python-3.x mongodb-query pymongo