在couchDB中按文档类型排序视图

时间:2017-12-21 11:31:44

标签: couchdb

我的couchDB中有不同类型的文档,例如:

{
   "_id": "c9f3ebc1-78f4-4dd1-8fc2-ab96f804287c",
   "_rev": "7-1e8fcc048237366e24869dadc9ba54f1",
   "to_customer": false,

   "box_type": {
       "id": 9,
       "name": "ZF3330"
   },
   "erp_creation_date": "16/12/2017",
   "type": "pallet",
   "plantation": {
       "id": 62,
       "name": "FRF"
   },
   "pallet_type": {
       "id": 2565,
       "name": "ZF15324"
   },
   "creation_date": "16/12/2017",

   "article_id": 3,
   "updated": "2017/12/16 19:01",
   "server_status": {
       "in_server": true,
       "errors": null,
       "modified_in_server": false,
       "dirty": false,
       "delete_in_server": false
   },

   "pallet_article": {
       "id": 11,
       "name": "BLUE"
   }
}

所以,在我的所有文件中,我都有字段:type。另一方面,我有一个视图,获取所有类型为pallet || shipment

的文档

这是我的观点:

function(doc) {
    if (doc.completed == true && (doc.type == "shipment" || doc.type == "pallet" )){  
        emit([doc.type, doc.device_num, doc.num], doc);
    }
}

所以在这个视图中我总是得到一个包含查看查询结果的列表,我遇到的问题是列表是通过接收日期排序(我猜),我需要按文档类型排序。 所以我的问题是:如何在视图中按document.type订购文档?

1 个答案:

答案 0 :(得分:1)

查看结果始终按键排序,因此您的视图按doc.type排序:首先您将获得所有托盘,然后是所有货件。托盘按device_num排序,然后num。如果使用相同的键发出多行,则行按_id排序。您可以在CouchDB documentation

中找到更详细的信息

所以你的观点应该按你想要的方式运作。 ; - )