是否可以直接用pymongo对mongodb子文档数组进行排序?

2024-09-30 20:18:03 发布

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

我不需要对返回的文档(对象)进行排序,而是根据嵌套的值。是这是可行的pymongo.sort公司()? 在

假设一个对象是:

{ //document data,
  array : [ {//subdocument data,
             "key" : 185},
             {//subdocument data,
             "key" : 186},
             {...}]
}

我尝试了以下方法,但没有成功,但我寻找一个简单的类似选项:

^{pr2}$

或者我应该用python排序?在

for location in locations:
    data['array'] = sorted(data['array'], key=lambda x: x['key'])

Tags: 对象方法key文档fordata排序选项
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:03

抱歉,但目前Mongo无法实现。在

所以,您唯一的办法就是在应用程序层中对其进行排序,这是成功的。 请注意,如果您总是希望对结果进行排序,可以通过使用$sort in your $push operator.来实现这一点。在您的情况下,您可以执行以下操作:

db.coll.update(
  { _id : ID },
  { 
     $push: {
       array: {
          $each: [{ key: 13}],
          $sort: { key: 1 }
       }
     }
  })

这样,在任何更新之后,您的子文档将被排序。然后当你取回它时,你就不需要对它进行排序了。在

相关问题 更多 >