Mongodb 如何将mongoimport与我的meteor应用程序数据库一起使用?

Mongodb 如何将mongoimport与我的meteor应用程序数据库一起使用?,mongodb,meteor,Mongodb,Meteor,我可以使用mongoimport将csv数据导入非meteor mongodb数据库,但我不知道如何将csv导入meteor应用程序数据库 我学会了如何为我的meteor应用程序运行mongo shell(meteor mongo),但我无法从shell运行mongoimport) 用于mongoimport的mongodb文档显示 在本例中,mongoimport将/opt/backups/contacts.csv中的csv格式数据导入到运行在编号为27017的本地主机端口上的MongoDB实

我可以使用
mongoimport
将csv数据导入非meteor mongodb数据库,但我不知道如何将csv导入meteor应用程序数据库

我学会了如何为我的meteor应用程序运行mongo shell(
meteor mongo
),但我无法从shell运行
mongoimport

用于
mongoimport
的mongodb文档显示

在本例中,mongoimport将/opt/backups/contacts.csv中的csv格式数据导入到运行在编号为27017的本地主机端口上的MongoDB实例上的用户数据库中的联系人集合中

mongoimport--db用户--收集联系人--键入csv--file/opt/backups/contacts.csv

但当我运行
mongod
时,启动我的meteor应用程序,然后运行
mongoimport
它将导入我的
test
数据库,而不是我的应用程序数据库

我读了这篇帖子:

使用mongoexport单独转储集合,然后使用mongoimport将文件导入meteor mongodb实例中名为meteor的数据库中。meteor mongo实例在端口3002上运行,绑定地址为127.0.0.1,数据文件位于meteor项目子目录中。meteor/local/db


但是我不知道如何连接到该实例,或者如何使用
mongoimport
命令将其作为目标。

看起来我刚刚在中回答了您的评论。无论如何,从mongodb.org为您的操作系统(或macports之类的软件包管理器)下载mongodb,并使用bin文件夹中提供的工具
mongoimport
不是mongoshell中的命令,而是单独运行的可执行文件

另外,别忘了把端口放进去(如果你在3000运行meteor实例,通常是3001),而且db通常是meteor&当你运行它时不是用户

mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv

注意:对于我来说,上述方法在端口3002上不起作用,但在端口3001上起作用

为了将外部TSV文件导入meteor db,我启动了meteor应用程序,该应用程序需要TSV数据。这也启动了meteor mongodb服务(在我的主机上是:localhost:3001),然后我在OSX中打开了一个终端,并通过终端导航到一个mongodb包bin文件夹,我之前下载了该文件夹,以获取二进制文件“mongoimport”。进入mongodb包的bin文件夹后,我在命令提示符下键入以下内容(某些开关选项会有所不同…但是--host、-localhost和--db开关/值应如图所示):

点击回车键后,mongoimport将在终端中成功导入。完成后,我可以通过终端导航到meteor应用程序并启动meteor mongo:$meteor mongo…,并在meteor db中查看该应用程序的导入集合“datarefs”

$  meteor mongo
...
...
meteor:PRIMARY> show collections
datarefs
system.indexes
meteor:PRIMARY>

首先在meteor应用程序中创建收藏,如下所示

Students = new Meteor.Collection("students");
然后添加一些伪值以确保meteor已初始化集合

Students.insert({“name”:“first”});
例如,在某些单击事件中。 要检查,请使用此

meteor:PRIMARY>显示集合
学生
系统索引

然后导入。
mongoimport-h localhost:3001-d meteor-c students
meteor无法识别新导入的集合,您需要删除所有集合并添加一些伪值,然后再次导入,或者创建一个新集合并使用伪值初始化它,然后导入。可能存在绑定错误,因为集合显示在minimongo中

感谢Akshat和Tom Kyler为运行mongoimport到xxx.meteor.com提供的小脚本(模板)

#!/bin/sh # Script to import csvfile to meteor application deployed to free meteor.com hosting. # Make sure your versions of mongo match with the metor.com mongo versions. # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12. if [ $# -eq 0 ] then echo "usage: $0 xxx.meteor.com collection filename.csv" exit 1 fi URL=$1 COLLECTION=$2 FILE=$3 echo Connecting to $URL, please stand by.... collection=$COLLECTION file=$FILE PUPMS=`meteor mongo --url $URL | sed 's/mongodb:\/\// -u /' | sed 's/:/ -p /' | sed 's/@/ -h /' | sed 's/\// -d /'` mongoimport -v $PUPMS --type csv --headerline --collection $COLLECTION --file $FILE #!/垃圾箱/垃圾箱 #用于将csvfile导入部署到免费meteor.com主机的meteor应用程序的脚本。 #确保您的mongo版本与metor.com mongo版本匹配。 #2016年1月,似乎是3.x左右。使用mongoimport 3.12进行测试。 如果[$#-eq 0] 然后 echo“用法:$0 xxx.meteor.com集合文件名.csv” 出口1 fi URL=$1 收款=$2 档案=$3 echo正在连接到$URL,请稍候。。。。集合=$collection文件=$file PUPMS=`meteor mongo--url$url | sed's/mongodb:\/\/\/-u/'| sed's/:/-p/'| sed's/@/-h/'| sed's/\/-d/'` mongoimport-v$PUPMS--type csv--headerline--collection$collection--file$file
现在我用它在数据库之间移动数据。这很简单——只需连接到每个数据库(通常是本地和远程数据库),就可以跨集合复制和粘贴文档。比命令行方法简单得多

最奇怪的事情一直在发生。正如您所说,我将数据导入一个名为
kanji
的集合中。但是从meteor我得到一个错误,当我查询时,
汉字是未定义的。如果我从meteor js代码中插入,我就可以读回插入的记录。不知道mongoimport记录去了哪里,但它们不在我的meteor db中。它看起来不像是进入了你的meteor db,使用MongoHUB之类的工具来帮助你检查,我注意到你使用了
用户
而不是
meteor
你试过更改它吗?Konichiwa!您还需要继续使用
var kanji=newmeteor.Collection('kanji')。Meteor不会检查收藏,除非你告诉它我试图批准你的编辑,但它不会让其他人先看到它,
-h
-host
会起作用!好的,是的,在我在《流星》中明确地做了这件收藏品之后,我又做了mongoimport,它似乎是连接在一起的。奇怪的这些东西并不总是很直观!谢谢你的帮助!您也可以通过
homebrew
安装
mongo
,并且
mongoimport
将可用!我很困惑,因为在使用mongoimport加载数据之前,我没有通过Meteor初始化收集。在初始化集合并加载数据之前,没有显示任何内容。 #!/bin/sh # Script to import csvfile to meteor application deployed to free meteor.com hosting. # Make sure your versions of mongo match with the metor.com mongo versions. # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12. if [ $# -eq 0 ] then echo "usage: $0 xxx.meteor.com collection filename.csv" exit 1 fi URL=$1 COLLECTION=$2 FILE=$3 echo Connecting to $URL, please stand by.... collection=$COLLECTION file=$FILE PUPMS=`meteor mongo --url $URL | sed 's/mongodb:\/\// -u /' | sed 's/:/ -p /' | sed 's/@/ -h /' | sed 's/\// -d /'` mongoimport -v $PUPMS --type csv --headerline --collection $COLLECTION --file $FILE