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

How to query cloudant db when there is an array in the json document

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

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

它们适用于组和属于该组的用户。 我想查询 return 登录用户所属的组。

所以当 "user1" 登录时,我希望看到 "aGroupName1" 和 "aGroupName2" 都被 returned。

条件是这样的: Select 当 GroupType == 0 或(GroupType == 1 和 userName == loginUser)时的组

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

您需要像下面这样的映射函数来发出复合键:

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

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