簡體   English   中英

Java-通過多個屬性過濾JSON對象數組

[英]Java - Filtering an array of JSON objects by multiple properties

我有一個像這樣存儲在Cloudant中的對象:

{
  "attr1": "value",
  "Objects": [{
      "code": "v1",
      "allowNull": "true",
      "country": "BE"
    },
    {
      "code": "v2",
      "allowNull": "false",
      "country": "EG"
    }
  ]
}

而且我想按代碼/國家/地區做一個過濾條件,因此輸出將只是“對象”列表的一個對象。

有辦法從Cloudant方面做到這一點嗎? 還是在Java方面可以完成的有效方法?

您可以使用Cloudant中的map-reduce視圖來實現。 嘗試一些類似的方法:

function(doc) {
    if (doc && doc.Objects) {
        doc.Objects.forEach(function(obj) {
            emit([obj.code, obj.country], obj);
        });
    }
}

這會使用向量值鍵[code, country]將“ Objects列表中的所有項目發出到索引中。

curl -s -XPOST -H "content-type:application/json" 'https://skruger.cloudant.com/demo/_design/query/_view/by_code_country?reduce=false' -d '{ "keys": [["v1","BE"]] }'
{"total_rows":2,"offset":0,"rows":[
    {"id":"1c593a931bcd7f0052ed8f9184810fd9","key":["v1","BE"],"value": 
        {"code":"v1","allowNull":"true","country":"BE"}}
]}

您只能使用{}通配符標記按代碼查詢,例如

curl -g 'https://skruger.cloudant.com/demo/_design/query/_view/by_code_country?reduce=false&startkey=["v1"]&endkey=["v1",{}]'
{"total_rows":2,"offset":0,"rows":[
    {"id":"1c593a931bcd7f0052ed8f9184810fd9","key":["v1","BE"],"value": 
    {"code":"v1","allowNull":"true","country":"BE"}}
]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM