【发布时间】:2018-05-09 11:33:21
【问题描述】:
我有以下收藏
[{
_id: 1
"origins": [
{
'depth': 100,
'magnitudes': [
{ 'magval': 5 }, { 'magval': 6 }, { 'magval': 7 }
]
},
{
'depth': 90,
'magnitudes': [
{ 'magval': 5 }, { 'magval': 6 }, { 'magval': 7 }
]
}
]
},
{
_id: 2
"origins": [
{
'depth': 100,
'magnitudes': [
{ 'magval': 5 }, { 'magval': 6 }, { 'magval': 7 }
]
},
{
'depth': 90,
'magnitudes': [
{ 'magval': 5 }, { 'magval': 6 }, { 'magval': 7 }
]
}
]
}
使用这样的查询(pymongo):
collection.update(
{},
{
'$push': {
'origins': {
'$each': [],
'$sort': {'depth': -1}
}
}
}, multi=True, upsert=True
)
...我可以就地更新我的集合,以便嵌入的原点数组按深度字段降序排序。
问题是......如何对作为每个原始对象的子对象的嵌入式幅度对象数组执行类似的就地排序?我希望原点内的大小按 magval 降序排序。
最终输出应该像这样存储回数据库中:
{
"origins": [
{
'depth': 100,
'magnitudes': [
{ 'magval': 7 }, { 'magval': 6 }, { 'magval': 5 }
]
},
{
'depth': 90,
'magnitudes': [
{ 'magval': 7 }, { 'magval': 6 }, { 'magval': 5 }
]
}
]
}
【问题讨论】: