如何在连接后在mongo shell中运行javascript文件

时间:2017-05-02 05:02:26

标签: mongodb

我有一个javascript文件,想在mongo shell中运行它们。我知道如何在连接期间从此链接加载javascript文件:How to execute mongo commands through shell scripts?。 但我的情况是如何在已建立连接后运行外部js文件。

我的js文件如下所示:

db.getSiblingDB("test")
  .enron_messages.find({
    $or: [{ filename: "111." }, { "headers.From": "test@gmail.com" }]
  })
  .sort({ "headers.To": 1 })
  .limit(10);

在我的mongo shell中,我使用load('test.js')加载该文件,但它返回true(参见下面的输出)。如何执行此文件?

> load('test.js')
true

1 个答案:

答案 0 :(得分:2)

load()函数确实执行了javascript文件。您面临的问题是,当外部脚本以“脚本化”模式执行时,find()将仅返回游标,而不是像在Interactive mode中运行时mongo shell那样迭代它。

Write Scripts for the Mongo shell中的文档详细介绍了此行为。在那里,您将看到一个示例,说明如何迭代光标并打印结果:

cursor = db.collection.find();
while ( cursor.hasNext() ) {
    printjson( cursor.next() );
}