我使用pymongo来保存我通过scrapy抓取的数据,当我使用show dbs
命令检查终端中的数据库时。看起来像这样
> show dbs
EPGD___test 0.000GB
EPGD_closetest 0.000GB
Testinsert 0.000GB
local 0.000GB
sta 0.000GB
stackoverflow 0.000GB
stackoverflow_test 0.000GB
stackoverflow_test_morning 0.000GB
temptest1 0.000GB
如您所见,数据库EPGD_closetest
的大小为0.000GB
,而在GUI mongoHub
中,数据库中也找不到任何集合。
[在此处输入图像说明] [2]:http://i.stack.imgur.com/nDZI1.png.But当我使用以下命令use EPGD_closetest
和db.EPGD_test.find()
时,我可以看到数据库中有数据。我也可以使用它pymongo。
我通过pymongo将数据保存到mongo时的代码:
def process_item(self, item, spider):
valid = True
for data in item:
if not data:
valid = False
raise DropItem("Missing {0}!".format(data))
if valid:
self.collection.insert(dict(item))
log.msg("Item wrote to MongoDB database {}, collection {}, at host {}, port {}".format(
settings['MONGODB_DB'],
settings['MONGODB_COLLECTION'],
settings['MONGODB_SERVER'],
settings['MONGODB_PORT']))
return item
当我通过pymongo从mongo读取数据时的代码:
from pymongo import MongoClient
client = MongoClient()
db = client.EPGD_closetest
collection = db.EPGD_test
print collection.find().count()
print collection.find_one({"taxID" : [ "9606" ]})
结果如下:
299
{u'familyID_url': u'http://epgd.biosino.org/EPGD/paralogfamily/getInfor.jsp?familyID=50144', u'description': [u'lectin, mannose-binding, 1'], u'symbol': [u'LMAN1'], u'taxID': [u'9606'], u'taxID_url': [u'http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=9606'], u'familyID': [u'50144'], u'genID': [u'3998'], u'genID_url': u'http://epgd.biosino.org/EPGD/gene/geneinfor.jsp?geneID=3998', u'_id': ObjectId('56fb6c11c75c1608bde3293c'), u'chromosome': [u'18']}
所以有人能告诉我我的mongo有什么问题吗?
答案 0 :(得分:0)
这是完全正常的...因为数据在您的集合中非常小,所以它显示了近0.000GB的数据。您可以添加更多数据以查看更改...
您还可以使用db.stats()
来检查db的数据统计信息。以下是db.stats()
{
"db" : "nxb",
"collections" : 2,
"objects" : 5,
"avgObjSize" : 133.8,
"dataSize" : 669,
"storageSize" : 40960,
"numExtents" : 0,
"indexes" : 2,
"indexSize" : 40960,
"ok" : 1
}