MongoDB - db在mongoimport之后不显示任何集合

时间:2014-11-04 20:23:13

标签: json mongodb collections

我实际上是在探索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是空的,但当我打开它时,有很多文档。

有人可以帮我吗? 提前谢谢。

2 个答案:

答案 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