MongoDb 排序数组值在聚合管道中不起作用

时间:2021-01-07 05:10:14

标签: database mongodb mongoose

考虑以下集合:

{"productId" : 1,
"isVariant": 1,
"isComplete" : 1,
"variantId" : 1,
"attributeSet" : [ 
        {
            "name" : "Capacity",
            "value" : "500 GB",
            "id" : 3
        }, 
        {
            "name" : "Form Factor",
            "value" : "5 inch",
            "id" : 4
        }, 
        {
            "id" : 5,
            "name" : "Memory Components",
            "value" : "3D NAND",
            "isVariation" : 0
        }
    ]
},
{"productId" : 2,
"isVariant": 1,
"isComplete" : 1,
"variantId" : 1,
"attributeSet" : [ 
        {
            "name" : "Capacity",
            "value" : "1 TB",
            "id" : 3
        }, 
        {
            "name" : "Form Factor",
            "value" : "5 inch",
            "id" : 4
        }, 
        {
            "id" : 5,
            "name" : "Memory Components",
            "value" : "3D NAND",
            "isVariation" : 0
        }
    ]
},
{"productId" : 3,
"isVariant": 1,
"isComplete" : 0,
"variantId" : 1,
"attributeSet" : [ 
        {
            "name" : "Capacity",
            "value" : "500 GB",
            "id" : 3
        }, 
        {
            "name" : "Form Factor",
            "value" : "2.5 inch",
            "id" : 4
        }, 
        {
            "id" : 5,
            "name" : "Memory Components",
            "value" : "3D NAND",
            "isVariation" : 0
        }
    ]
},
{"productId" : 4,
"isVariant": 1,
"isComplete" : 0,
"variantId" : 1,
"attributeSet" : [ 
        {
            "name" : "Capacity",
            "value" : "1 TB",
            "id" : 3
        }, 
        {
            "name" : "Form Factor",
            "value" : "2.5 inch",
            "id" : 4
        }, 
        {
            "id" : 5,
            "name" : "Memory Components",
            "value" : "3D NAND",
            "isVariation" : 0
        }
    ]
}

这是我的查询,用于返回每个不是变体的属性集值的值。

db.collection.aggregate([
  { $match: { isComplete: 1 } },
  {
    $project: {
      _id: 0,
      attributeSet: 1
    }
  },
  { $unwind: "$attributeSet" },
  { $match: { "attributeSet.isVariation": { $ne: 0 } } },
  {
    $group: {
      _id: "$attributeSet.id",
      name: { $first: "$attributeSet.name"  },
      values: { $addToSet: "$attributeSet.value" }
    }
  },
{ 
 $sort: {
   name : 1,
   values : 1
 }
}
])

上述查询工作正常并产生所需的输出,但唯一的问题是对值进行排序时。排序阶段对 name 工作正常,但作为数组的值不会被排序。任何人都可以帮我完成这个查询吗?

0 个答案:

没有答案