我实际上是在探索MongoDB和mapReduce,但是我遇到了问题。
mongodb的安装很成功。
之后我尝试import a json
文件输入这两个命令,然后在终端中调用mongo(我正在使用Ubuntu 12.04 LTS):
$ wget http://media.mongodb.org/zips.json
$ mongoimport --db mapreduce --collection zips --file zips.json
然后我叫命令:
$ mongo
我收到了这些警告:
MongoDB shell version: 2.6.5
connecting to: test
Server has startup warnings:
2014-11-04T20:15:12.280+0100 [initandlisten]
2014-11-04T20:15:12.280+0100 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-11-04T20:15:12.280+0100 [initandlisten] ** 32 bit builds are limited to less than 2GB of data (or less with --journal).
2014-11-04T20:15:12.280+0100 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off.
2014-11-04T20:15:12.280+0100 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
2014-11-04T20:15:12.280+0100 [initandlisten]
现在,当我想展示收藏品时,我通常会输入:
展示广告
但它没有显示任何收藏。像这样:
展示收藏品
>
当我输入
显示dbs
我上了终点站:
admin (empty)
local 0.078GB
mapreduce 0.078GB
test (empty)
zips (empty)
这意味着数据库zips是空的,但当我打开它时,有很多文档。
有人可以帮我吗? 提前谢谢。
答案 0 :(得分:1)
mongoimport --db mapreduce --collection zips --file zips.json
此命令将文件zips.json
中的数据导入驻留在zips
数据库中的名为mapreduce
的集合。
现在,当我想要展示收藏品时,我通常会输入:show collections但它并没有显示任何收藏品。像这样:
默认情况下,当您打开新的mongo
客户端时,它会使用test
数据库。即所有完成的操作不切换数据库都将在test
数据库上执行。
由于mongoimport
命令在mapreduce
数据库而不是默认的test
数据库中执行操作,因此您在test
数据库中看不到任何集合。
执行show dbs
时,会列出所有存在的数据库。您可以看到那里列出的新mapreduce
数据库。您在此处看到的zips
是您可能意外创建的数据库,而不是您已将数据导入其中的集合。
这意味着数据库zips为空,但是当我打开它时,会有很多文档。
是的,名为zips
的数据库为空。您正在寻找的是zips
集合。
因此,您需要发出命令:use mapreduce;
,以便首先切换到mapreduce
数据库。在那里,当您发出show collections
时,您可以看到导入数据的zips
集合。
答案 1 :(得分:0)
这是@ BatScream的一个很好的解释。我想在@BatScream上再添加一点。
您尝试了导入,如下所示:
$ mongoimport --db mapreduce --collection zips --file zips.json
因此,您的.json
文件将导入zips
数据库中的mapreduce
集合。要查看导入的数据,请提供以下命令:
>show dbs
>use mapreduce
>show collections
>db.zips.find()
现在导入的数据将出现在zips
集合中。
为何会出现这些警告?
32位MongoDB进程限制为大约2 GB的数据。原因是MongoDB存储引擎使用内存映射文件来提高性能。所以它不可能很多地使用日志。因此默认情况下,日志将在32位关闭。不要在mongodb中禁用日记。不要使用32位进行制作。要了解日记,请查看我的博文for a clear idea。