在Mongo中按嵌套数组中的文档值排序

马连

我有一个称为对象的集合。每个对象文档都有一个嵌套的文档数组,称为属性。每个属性文档都有一个名称和一个值。

例如,假设我有这两个对象,每个对象都有两个属性(高度和宽度)。如何按高度对物体进行排序?

{
  "id": 1,
  "properties": [
    {
      "name": "height",
      "value": 170
    },
    {
      "name": "width",
      "value": 200
    },
  ]
},
{
  "id": 2,
  "properties": [
    {
      "name": "height",
      "value": 100
    },
    {
      "name": "width",
      "value": 300
    },
  ]
}
阿南德·贾亚巴兰

在大多数情况下,aggregation framework每当您处理数组时,MongoDB就是您的朋友。看一下$unwind可用于将数组拆分为单个文档运算符。我在下面发布了一个示例查询,以对文档进行排序height请注意,可以$project在聚合管道中使用运算符来更好地格式化结果。

db.objects.aggregate([
    // De-normalize the 'properties' array
    {$unwind:"$properties"}, 
    // Filter for only height
    {$match:{"properties.name":"height"}},
    // Sort by 'height' in ascending order.  Use -1 for descending 
    {$sort:{"properties.value":1}}
])

编辑:保持properties元素完整的一种方法是使它的副本仅用于排序。下面是一个示例:

db.objects.aggregate([
    // Make a copy of the 'properties' element
    {$project:{properties:1, sortfield:"$properties"}}, 
    {$unwind:"$sortfield"}, 
    {$match:{"sortfield.name":"height"}}, 
    {$sort:{"sortfield.value":1}}, 
    // Get rid of 'sortfield' 
    {$project:{properties:1}}
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mongo按数组中的值对文档进行排序

来自分类Dev

按日期获取mongo集合中嵌套数组元素的特定值

来自分类Dev

按嵌套数组中的值过滤数组

来自分类Dev

从mongo集合中的嵌套数组元素获取特定值

来自分类Dev

在MongoDB中更新嵌套数组文档

来自分类Dev

在Mongo中合并嵌套数组

来自分类Dev

从Ember中的模型排序嵌套数组?

来自分类Dev

如何使用mongoose删除mongo文档中嵌套数组的所有元素?

来自分类Dev

在mongo中按子文档字段排序

来自分类Dev

MongoDB按数组中的值对文档进行排序

来自分类Dev

从三重嵌套数组MongoDB中按ID提取文档

来自分类Dev

mongo深度嵌套数组中的mongo子项删除/拉出

来自分类Dev

如何在JavaScript中按升序对嵌套数组进行排序?

来自分类Dev

提取嵌套数组中的相关值

来自分类Dev

更新嵌套数组中的属性值

来自分类Dev

在嵌套数组中获取$ Max值

来自分类Dev

在嵌套数组中获取$ Max值

来自分类Dev

从嵌套数组中删除重复的值

来自分类Dev

提取嵌套数组中的相关值

来自分类Dev

如何更新嵌套数组中的值?

来自分类Dev

MongoDB:如何从嵌套数组中的文档中删除对象

来自分类Dev

在Elasticsearch中,如何在嵌套数组中按值分组

来自分类Dev

如何在已知索引值的Node.js + Mongo DB中更新嵌套数组

来自分类Dev

按嵌套文档之一中的值对文档进行排序

来自分类Dev

用php在第3个值中对第2个嵌套数组进行排序

来自分类Dev

在聚合mongodb中按文档数组排序

来自分类Dev

如何在PostgreSQL中按嵌套数组的重复值分组?

来自分类Dev

MongoDB:按ID过滤父对象时增加嵌套数组中的值

来自分类Dev

MongoDB查询可从嵌套数组中过滤子文档

Related 相关文章

热门标签

归档