我使用带有WiredTiger存储引擎的MongoDB 3.0。 当我在dbPath中检查我的Mongo文件时,我看到了文件的名称,格式如下: 收集,0--4989330656807016483.wt 收集,2--4989330656807016483.wt 收集,4--4989330656807016483.wt 。 。 。 我怎么知道这些文件名和真实集合之间的关系?名称除了数据大小的方式??
答案 0 :(得分:3)
我找到了命令“db.collection.stats()”将显示的方法,即wiredTiger.metadata.uri,它定义了集合的逻辑名称和文件名之间的关系命令
答案 1 :(得分:1)
使用此
db.getCollection('collection_name').stats()
答案 2 :(得分:0)
找到给定文件名的集合名称的简单脚本:
function findInDb(dbName, collectionIdToFind) {
var dbToSearch = db.getSiblingDB(dbName);
var collectionNames = dbToSearch.getCollectionNames();
for(var i = 0; i < collectionNames.length; i++){
var name = collectionNames[i];
var stats = dbToSearch.getCollection(name).stats();
var uri = stats.wiredTiger.uri;
if (uri.endsWith(collectionIdToFind))
return name;
}
return null;
}
function findInAllDbs(collectionIdToFind) {
var adminDb = db.getSiblingDB("admin");
var dbList = adminDb.runCommand({ "listDatabases": 1 }).databases;
for (var i in dbList) {
var found = findInDb(dbList[i].name, collectionIdToFind);
if (found != null) {
return dbList[i].name + "." + found;
}
}
return "(not found)";
}
print(findInAllDbs("collection-20-571885508699163146")); // filename in crash report, etc.
答案 3 :(得分:-2)
您可以通过查询GridFS集合查询有关大数据文件(&gt; 16 M)的信息,具体来说:
db.fs.files - 存储文件的元数据。 db.fs.chunks - 存储二进制块