蒲团中的Json数组迭代

时间:2019-10-08 15:31:02

标签: couchdb couchdb-futon

我正在使用CocuhDB,我具有此文档结构

{"master": false,
"type": "a",
"company": 9,
  "products": [
       {
           "unit": {
               "id": 9,
               "isMp": false,
               "_id": "40109daadce8d3671a1aeca35bbb1438"
           },
           "article": {
               "id": 1132,
               "id_provider": 0,
               "isMp": false,
               "id_unit": 9,
               "weight": 0,
               "_id": "eb1718f96375b01af5552cf3f4c2d86b",
               "code": "ME021",
               "type_article": 2
           },
           "order": 1,
           "warehouse_company": {
               "id": 9,
               "_id": "ebce7557ff95203ac5d03f294381d6ed"

           },
           "article_code": "ME021",
           "provider": {
               "id": 2313,
               "isMp": false
           },
           "qty": 20.5,
           "warehouse": {
               "id": 18,
               "isMp": false
           }
       },   {
           "unit": {
               "id": 9,
               "isMp": false,
               "_id": "40109daadce8d3671a1aeca35bbb1438"

           },
           "article": {
               "id": 1132,
               "id_provider": 0,
               "isMp": false,
               "id_unit": 9,
               "weight": 0,
               "_id": "eb1718f96375b01af5552cf3f4c2d86b",
               "code": "ME099",
               "type_article": 2
           },
           "order": 1,
           "warehouse_company": {
               "id": 9,
               "isMp": false
           },
           "article_code": "ME021",
           "provider": {
               "id": 2313,
               "isMp": false,
               "_id": "657abbdfb4c713a9baa1ffd7329319c0"
           },
           "qty": 20.5,
           "warehouse": {
               "id": 18,
               "isMp": false,
               "_id": "9f70abb04a0243a1cd997b6430fb2207"
           }
       }
   ]
}

enter image description here

products字段coulb为1或10。  我需要找到所有文档

  

doc.products [n] .warehouse.id == 18

但是我不知道如何使用Futon来做到这一点。 我正在尝试类似的东西:

function(doc) {
    var product, value;
    if (doc.type != master && doc.type == "a" && doc.company == 9) {
        for (product in doc.products) {
            value= doc.prices[producto];
            emit(value, doc );
        }
    }
}

但是它不起作用。
我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您可以使用这样的视图。这是一个例子。没有解决办法

function(doc) {
    var product, value;
    if (doc.type != "master" && doc.type == "a" && doc.company == 9 && doc.products && Array.isArray(doc.products)) {
        doc.products.forEach(function(product) {
          Object.keys(product).forEach(function(key) {
            emit([key, product[key].id]);
          });
        });
    }
}

将创建类似输出

{
    "total_rows": 16,
    "offset": 0,
    "rows": [
        {
            "key": [
                "article",
                1132
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "article",
                1132
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "article_code",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "article_code",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "order",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "order",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "provider",
                2313
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "provider",
                2313
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "qty",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "qty",
                null
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "unit",
                9
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "unit",
                9
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "warehouse",
                18
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "warehouse",
                18
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "warehouse_company",
                9
            ],
            "id": "check",
            "value": null
        },
        {
            "key": [
                "warehouse_company",
                9
            ],
            "id": "check",
            "value": null
        }
    ]
}

您可以搜索ID为18的“仓库”

using key=["warehouse",18]
相关问题