使用 Javascript/Node.js 在代码中执行 mongoimport
Posted
技术标签:
【中文标题】使用 Javascript/Node.js 在代码中执行 mongoimport【英文标题】:Executing mongoimport inside code with Javascript/Node.js 【发布时间】: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)); 是的,你需要插入:) 【参考方案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 命令”——所以从技术上讲,这是可行的。但我知道这可能不是他在效率方面的想法。以上是关于使用 Javascript/Node.js 在代码中执行 mongoimport的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - Node.js - 防止函数的多次执行