我在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中进行查询。感谢您的帮助!
仁
答案 0 :(得分:0)
您需要一个如下所示的地图函数来发出复合键:
function (doc) {
if (doc["@dataType"] == "GroupItem") {
doc.Users.map(function(user) {
emit([user.userName, doc.name]);
});
}
}
这样您就可以userName
进行查询,并找到所有匹配的组name
值。如果您还需要按组类型查询,请将GroupType
添加到该复合键。