首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo中的数组排序

Mongo中的数组排序
EN

Stack Overflow用户
提问于 2014-02-05 22:50:24
回答 1查看 142关注 0票数 0

H有带有数组的json文档。因为我不能用push或addtoset添加到数组的开头,所以我需要对数组进行排序。示例

代码语言:javascript
复制
{
  "Component": [
    {
      "Id": "PDP-1",
      "Links": {"Link": [
          {
            "Text": "Western Division",
            "Url": "/1x7-en70ai/last-minute-holidays-western-division",
            "Title": "Last minute holidays Western Division"
          },
          {
            "Text": "Browse Regions ",
            "Url": "/1x7-en6uly-10ts/last-minute-holidays-gambia/regions",
            "Title": "Last minute holidays Gambia",
            "Style": "BrowseForMore"
          },
          {
            "Text": "City of Banjul",
            "Url": "/1x6-en6vq7/holidays-city-of-banjul",
            "Title": "City of Banjul Holidays"
          },
          {
            "Text": "Western Division",
            "Url": "/1x6-en70ai/holidays-western-division",
            "Title": "Western Division Holidays"
          }
        ]},
      "Title": "Regions",
      "Type": "PDP"
    },
    {
      "Id": "PDP-2",
      "Links": {"Link": [
          {
            "Text": "Bijilo",
            "Url": "/1x7-enbmy6/last-minute-holidays-bijilo",
            "Title": "Last minute holidays Bijilo"
          },
          {
            "Text": "Browse Cities ",
            "Url": "/1x7-en6uly-10tt/last-minute-holidays-gambia/cities",
            "Title": "Last minute holidays Gambia",
            "Style": "BrowseForMore"
          },
          {
            "Text": "Banjul Beach",
            "Url": "/1x6-enakgm/holidays-banjul-beach",
            "Title": "Banjul Beach Holidays"
          },
          {
            "Text": "Bijilo",
            "Url": "/1x6-enbmy6/holidays-bijilo",
            "Title": "Bijilo Holidays"
          },
          {
            "Text": "Brufut Heights",
            "Url": "/1x6-encok8/holidays-brufut-heights",
            "Title": "Brufut Heights Holidays"
          },
          {
            "Text": "Kololi",
            "Url": "/1x6-enpnle/holidays-kololi",
            "Title": "Kololi Holidays"
          },
          {
            "Text": "Kotu",
            "Url": "/1x6-enq067/holidays-kotu",
            "Title": "Kotu Holidays"
          }
        ]},
      "Title": "Cities",
      "Type": "PDP"
    }
  ],
  "Id": "118431",
  "Template": {
    "PageTemplate": {
      "Code": "2B2",
      "text": "041 - TEMP2 - COP_CONCOU_{LAST MINUTE}"
    },
    "Category": {
      "Code": "1X7",
      "Type": "Product",
      "text": "Last minute holidays"
    },
    "GeoObject": {
      "Code": "EN6ULY",
      "text": "Gambia, The"
    },
    "GeoObjectType": {
      "Code": "1A",
      "text": "Political"
    },
    "GeoObjectSubType": {
      "Code": "10TR",
      "text": "Country"
    }
  },
  "Type": "Content",
  "Url": "/1x7-en6uly/last-minute-holidays-gambia",
  "_id": {"$oid": "528492d4c90fa9fcd0436929"}
}

我想在Links.Link 'BrowseForMore‘中按样式对此进行排序。你知道怎么做吗?我想我可以用push添加虚拟数组,然后它就可以按我想要的方式进行排序。感谢您的任何帮助

EN

回答 1

Stack Overflow用户

发布于 2014-02-06 06:32:43

您似乎想要更新数组并保持排序顺序,将Links.Link.Style值放在列表的前面。在这种情况下,使用带有update的$sort修饰符。

代码语言:javascript
复制
db.collection.update(
    { _id: id },
    { $push: { "Links.Link: {$each: [doc], $sort { Style: -1 }}} }
)

即使只有一个文档,也需要$each运算符,但可以使用多个文档。

如果您试图使用$addToSet来维护惟一的文档,那么MongoDB的官方说法是集合被认为是无序的,因此修饰符在这里不可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21580510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档