如何在json文档中存在数组时查询cloudant db

时间:2015-11-13 12:15:50

标签: ibm-cloud cloudant

我在cloudant DB中有一些json文档,如下面的记录。

  

{“@ dataType”:“GroupItem”,“name”:“aGroupName1”,“GroupType”:0},            {“@ datType”:“GroupItem”,“name”:“aGroupName2”,“GroupType”:1,“Users”:[{“deviceUUID”:“id1”,“userName”:“user1”},{“deviceUUID “:”id2“,”userName“:”user2“}]}

它们适用于组和属于该组的用户。 我想进行查询以返回登录用户所属的组。

所以当“user1”登录时,我想看到返回“aGroupName1”和“aGroupName2”。

条件如下: 当GroupType == 0或(GroupType == 1和userName == loginUser)

时选择组

因为userName在json中的数组中,所以我不知道如何在Cloudant中进行查询。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要一个如下所示的地图函数来发出复合键:

function (doc) {
  if (doc["@dataType"] == "GroupItem") {
    doc.Users.map(function(user) {
      emit([user.userName, doc.name]);
    });
  }
}

这样您就可以userName进行查询,并找到所有匹配的组name值。如果您还需要按组类型查询,请将GroupType添加到该复合键。