【问题标题】:Executing mongoimport inside code with Javascript/Node.js使用 Javascript/Node.js 在代码中执行 mongoimport
【发布时间】:2013-03-04 10:23:18
【问题描述】:

node.js/javascript 中是否有任何库允许个人在代码中使用mongoimport

据我了解,mongoimport 有点像 .exe,您必须先执行它才能使用它的文本输入环境。

是否可以在我的代码中执行 mongoimport,然后在我的代码中直接解析我需要的任何命令?

我目前的算法涉及:

fs.appendFile('log.txt',JSON.stringify(obj, null, 2));

obj 是一个对象,它指定使用 node.js 的 res 方法(请求 HTTP 响应)解析成 JSON.stringify 的函数

var obj = {};
obj.url = hostNames[i];
obj.statusCode = res.statusCode;
obj.headers = res.headers;

然后我使用 mongoimport 将此 JSON 文档导入我的 MongoDB。

mongoimport --host localhost -db scrapeapp -collection scrape --file log.txt --jsonArray

这种方法显然效率低下。我想一次性完成所有这些步骤。

帮助赞赏

【问题讨论】:

  • 你看过 MongoDB node.js 驱动吗?如果您想直接从 node.js 服务与 MongoDB 对话,这就是您想要使用的。文档在这里:docs.mongodb.org/ecosystem/drivers/node-js
  • 为了扩展詹姆斯所说的,我认为你对 mongoimport 的用途有一些误解。您与 mongodb 的大部分交互都将通过驱动程序进行。该驱动程序允许您通过特定语言(在本例中为 javascript)在数据库中插入、更新和删除文档(对象)。 Mongoimport 不应该用于您的数据库中的正常插入,它主要用于导入从其他来源(如其他数据库或应用程序)导出的数据。
  • 你是对的。我目前对 MongoDB 的使用确实存在误解。我目前正在从几个(数千个)站点中抓取标题,然后我将在几个月后对其进行分析。我将更改我的算法以逐个标头执行 insert() 标头,而不是执行导入。你怎么看? db.scrape.insert(JSON.stringify(obj,null,2));
  • 是的,你需要插入:)

标签: javascript json node.js mongodb mongoimport


【解决方案1】:

这就是我在代码中的做法

let exec = require('child_process').exec
let command = 'mongoimport -d database -c collection --file import.json'
exec(command, (err, stdout, stderr) => {
  // check for errors or if it was succesfuly
  cb()
})

我执行 mongoimport 命令,然后在代码旁边传递 cb 以使其可访问,或者如果您不使用异步样式,您可以与 child_process.execSync(command[,options]) 同步执行它

【讨论】:

    【解决方案2】:

    我绝不是节点专家 - 但如果您有现有的 JSON 文件,您可以按照 here 或各种 answers 中所述的 shell 命令在 Node 中执行 mongoimport。

    【讨论】:

    • 他说他知道这一点。他在问如何在 JavaScript 而不是 mongo shell 中做相当于 mongoimport 的操作。
    • 他问“是否可以在我的代码中执行 mongoimport”。我链接到的第一篇文章的标题是“使用 Node.js 执行 Unix 命令”——所以从技术上讲,这是可行的。但我知道这可能不是他在效率方面的想法。
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多