从 AQL 获取对象数组

Get array of object from AQL

我想要一个结果作为 AQL 中的对象数组。

查询:

db._query(aql`FOR doc IN ${collection} RETURN doc`).toArray();

我想要这个结果...

{ "0": {"id": 1}, "1": {"id":2} }

...数组形式:

[{"id": 1}, {"id":2}]

您当前使用的查询是 return 将集合中所有具有所有属性的文档作为一个数组。

如果您只想 return 特定属性,您可以在查询的 RETURN 语句中引用它们,例如

db._query(aql`FOR doc IN ${collection} RETURN doc.id`).toArray();

上面的查询将 return 一个仅包含 id 值的数组,因此可能也不是您想要的。

如果您想 return 某些属性及其值,则有以下解决方案:

在 RETURN 部分明确命名属性:

db._query(aql`FOR doc IN ${collection} RETURN { id: doc.id }`).toArray();

使用AQL KEEP函数:

db._query(aql`FOR doc IN ${collection} RETURN KEEP(doc, ["id"])`).toArray();

如果 return 有多个属性,后一种方法将节省输入。在这种情况下,您只需将它们添加到 KEEP 的第二个参数中。

如果问题更多关于"how can I exclude certain attributes from being returned",那么还有UNSET AQL函数:

db._query(aql`FOR doc IN ${collection} RETURN UNSET(doc, ["_key", "_rev", "_id"])`).toArray();

此方法将 return 没有上述属性的文档。