【问题标题】:I want to sort items in array by a field with pymongo我想通过 pymongo 的字段对数组中的项目进行排序
【发布时间】:2019-12-06 13:41:33
【问题描述】:

我在 mongodb 中有一张表。例如:

{
  "holdng_name":"MCT",
  "employes":[
     {"name":"Koroglu", "number":4},
     {"name":"Babek", "number":1},
     {"name":"Uzun Hasan", "number":3},
     {"name":"Fatali Xan", "number":2}
  ]
}

现在我想按此列表中的“数字”对其进行排序。

【问题讨论】:

  • 要根据每个元素的数值对employees数组进行排序吗?

标签: arrays mongodb sorting pymongo


【解决方案1】:

$push 数组更新运算符可以与 $sort$each 修饰符一起使用以获得所需的结果。

db.collection.update(
   {},
   {
     $push: {
       employes: {
         $each: [],
         $sort: { number: 1 } //-1 for descending
       }
     }
   }
);

输出:对于问题中的输入文档

{
  _id: ObjectId("5d7514a3f31ae7e980dac80b"),
  holdng_name: "MCT",
  employes: [
    {
      name: "Babek",
      number: 1
    },
    {
      name: "Fatali Xan",
      number: 2
    },
    {
      name: "Uzun Hasan",
      number: 3
    },
    {
      name: "Koroglu",
      number: 4
    }
  ]
};

注意:collection 是目标集合。而$each 用于模拟不向每个employes 记录推送任何内容,以使$sort 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2018-02-25
    • 2012-12-09
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多