Json 蒲团中的数组迭代

Json array iteration in 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"
           }
       }
   ]
}

products 字段可以是一或十。 我需要找到

所在的所有文件

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 );
        }
    }
}

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

您可以像这样使用视图。这是一个例子。不是解决方案

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]