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
添加到该复合键。
我在 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
添加到该复合键。