代码之家  ›  专栏  ›  技术社区  ›  mikewilliamson

在ArangoDB中随机选择一个文档

  •  7
  • mikewilliamson  · 技术社区  · 9 年前

    是否有方法使用AQL从集合中随机返回文档?

    我想创建一个用于测试的随机图。 我还没有弄清楚如何从集合中随机选择文档。

    我希望我能做这样的事情:

    db._query('RETURN nodes[RAND(0..LENGTH(nodes))]').toArray()
    JavaScript exception in file '/usr/share/arangodb/js/client/modules/org/arangodb/arangosh.js' at 104,11: [ArangoError 1541: invalid number of arguments for function 'RAND()', expected number of arguments: minimum: 0, maximum: 0 (while parsing)]
    !    throw new ArangoError(requestResult);
    

    你有什么想法吗?

    2 回复  |  直到 9 年前
        1
  •  15
  •   Alan Plum    9 年前

    @yojimbo 87是对的。

    要从集合中选择随机文档,可以改为执行以下操作:

    FOR node IN nodes
      SORT RAND()
      LIMIT 1
      RETURN node
    

    JavaScript层(arangosh/Foxx)中的集合对象也有一种方法:

    var node = db.nodes.any();
    
        2
  •  4
  •   yojimbo87 jesuisbonbon    9 年前

    据我所知 RAND() AQL函数不接受任何参数,并返回介于0和1之间的伪随机数,这就是为什么会出现参数数量无效的错误。