Pymongo Aggregate()对数组字段进行排序

时间:2018-08-18 07:54:49

标签: python mongodb pymongo

我正在做一个汇总,在某个阶段,我得到以下结果:

[{ "_id" : 1, "array_field": [1, 2, 3]},
 { "_id" : 2, "array_field": [3, 2, 1]}]

我想在下一阶段对array_field进行排序:

[{ "_id" : 1, "array_field": [1, 2, 3]},
 { "_id" : 2, "array_field": [1, 2, 3]}]

有什么可能? $ sort并没有帮助我。

1 个答案:

答案 0 :(得分:1)

您需要$unwind array_field,然后再次$group进行回滚

db.collection.aggregate([
  { "$unwind": "$array_field" },
  { "$sort": {
    "array_field": 1
  }},
  { "$group": {
    "_id": "$_id",
    "array_field": {
      "$push": "$array_field"
    }
  }}
])