我有一个看起来像这样的集合:
{
"_id" : "customer1",
"verarray" : [
"10.5.0-50_0",
"11.5.0-30_0"
]
}
{
"_id" : "customer2",
"verarray" : [
"11.0.0-30_0",
"11.5.0-80_0",
"12.5.0-111_0",
"13.3.0.21_0.31125",
"13.5.0-20_0"
]
}
{
"_id" : "customer3",
"verarray" : [
"11.5.0-95_0",
"12.6.0.131_0.33392",
"10.0.0-5_0",
"11.5.0.20_0.22028",
"12.6.0.131_0.33392"
]
}
如您所见,第三个客户阵列未按顺序排列。我想对每个排序verarray
。我怎么做?谢谢
您可以$unwind
用来展开数组,对其进行排序,然后通过对condition进行分组来重新创建相同的数组_id
。
db.collection.aggregate([
{ $unwind: "$verarray" },
{ $sort: { verarray: 1 } }, // Using 1 for asc & use -1 for desc order
{ $group: { _id: "$_id", verarray: { $push: "$verarray" } } }
])
测试: mongoplayground
参考: 聚合
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句