我正尝试根据条件从边缘集合获取数据
在我的边缘集合中,我有如下数据
{
_from: "rooms/1"
_to: "users/1"
type: "admin"
},{
_from: "rooms/1"
_to: "users/2"
type: "member"
},{
_from: "rooms/1"
_to: "users/3"
type: "member"
}
现在我只想获取管理员的用户信息。我尝试使用下面的查询,但它返回空值
FOR r IN rooms
FILTER r._key == 1
let admins = (
FOR u IN ANY r rooms_users
FILTER rooms_users.type == "admin"
RETURN u
)
RETURN MERGE([r, {admin: admins [0]}])
先谢了
1条答案
按热度按时间oewdyzsn1#
我看到三个小问题...
首先,
_key
属性总是一个字符串,因此需要在第一个过滤器中用引号将1
括起来。其次,在“admins”子查询中,不能过滤“rooms_users”,因为这是边缘集合的名称,而不是边缘文档的标识。要过滤边缘的属性,需要在
FOR
语句中添加一个变量来标识边缘(本例中为e
)-docs。最后,出于性能原因,我将图形查询从
ANY
更改为INBOUND
,并将其限制为1
。(a)这个房间的管理员,不会遍历长方向向上和向下的图形试图找到任何和所有的文档(它实际上在一个循环为我和超时的伤口)。