使用以下命令,我可以获得特定集合的数据大小:
db.collection.dataSize()
如何获取数据库的数据?
答案 0 :(得分:37)
在mongoshell上使用以下命令:
db.stats()
输出应该是这样的:
{
"collections" : 3,
"objects" : 80614,
"dataSize" : 21069700,
"storageSize" : 39845376,
"numExtents" : 9,
"indexes" : 2,
"indexSize" : 6012928,
"ok" : 1
}
查看更多诊断命令here。
答案 1 :(得分:4)
在Java中使用db.getStats()
CommandResult re = db.getStats();
for(String k: re.keySet()){
System.out.println(k+"="+re.get(k) );
}
然后会得到如下结果:
serverUsed=127.0.0.1:27017
db=test
collections=3
objects=100004
avgObjSize=67.99876004959802
dataSize=6800148
storageSize=10633216
numExtents=9
indexes=1
indexSize=4406864
fileSize=50331648
nsSizeMB=16
ok=1.0
答案 2 :(得分:4)
dbStats命令返回给定数据库的不同存储统计信息。
正如this post中所述,您应该监控的不同MongoDB性能指标(使用MMAPv1),您提到的dataSize
指标会衡量数据库中所有文档和填充所占用的空间。
要在磁盘上获取数据库的“存储空间”,您应该查看与数据文件大小相对应的fileSize
指标。仅当您删除数据库时它才会减少,并且在删除集合,文档或索引时不会受到影响。
另请注意,使用MMAPv1存储引擎时,映射内存(mem.mapped
指标)对应于用于将数据库映射到内存的虚拟内存量,可以很好地近似计算内存的总大小。你的数据库。您可以使用serverStatus command访问此指标。
答案 3 :(得分:1)
在MongoDB中:
db.stats() //For db status
db.<collectionname>.stats() //For collection status
在Python中:
connection = pymongo.Connection(host = "127.0.0.1", port = 27017)
db = connection["test_db"]
test_collection = db["test_collection"]
db.command("dbstats") # prints database stats for "test_db"
db.command("collstats", "test_collection") # prints collection-level stats for "test_collection" under "test_db".
在PHP中:
$con= new Mongo()
$stats=$con->dbName->command(array('dbStats' => 1)); // for db.stats()
$stats=$con->dbName->command(array('collStats' => 'collection_name')); // for db.collection_name.stats()