在Robo3T中,如何添加自定义函数

时间:2017-09-26 06:15:39

标签: javascript mongodb robo3t

我刚安装了Robo3T(之前名为robomongo),它有一个用于mongo db的GUI。 我想添加一个自定义函数来帮助我按正常顺序获取最后N个文档,查询语句是这样的:

db.getCollection('i1801').find().skip(db.getCollection('i1801').count() - 1200)

我从stackoverflow(mongodb: how to get the last N records?)发现,这可以写成这样的函数:

function last(N) {
    return db.collection.find().skip(db.collection.count() - N);
}

然后我回到我的Robo3T,尝试添加自定义函数last(),但没有效果,功能选项卡下没有显示任何内容。

我附上了一些屏幕截图,说明了这个问题:

Trying to add a custom function

Created a custom function and saved

After save, nothing happened

单击“保存”按钮后,没有任何操作,功能选项卡下仍然没有功能。日志显示创建的函数last,并刷新功能选项卡。 Here is the logs

那么,我如何在这里添加last函数?

2 个答案:

答案 0 :(得分:1)

尝试了您列出的步骤,它适用于简单的查找语句。当我添加'skip'时,保存失败。甚至更新现有功能也不起作用。也许是Robo的一个问题?我不知道。

无论如何,要在Robo3t中添加功能

  1. 右键单击集合
  2. 选择Open Shell
  3. 在shell上输入以下内容
  4. db.system.js.save(
       {
         _id: "last",
         value : function last(x) { return db.test.find().skip(db.test.count() - x); }
       }
    )

    最后,运行脚本并刷新Function文件夹。

答案 1 :(得分:0)

用于调用函数:

  

db.loadServerScripts();
callyourfunction();

  1. 右键单击收藏集
  2. 单击打开的外壳
    https://i.stack.imgur.com/YTiGc.jpg
  3. 在shell中运行db.loadServerScripts();
    https://i.stack.imgur.com/BDTBT.jpg
  4. 调用用户函数,例如:addTwo(2,5);
    https://i.stack.imgur.com/EujGo.jpg

注意::对于可见的输出,请确保您的函数应为返回值

相关问题