我使用带有 WiredTiger 存储引擎的 MongoDB 3.0。当我在 dbPath 中检查 Mongo 文件时,我看到文件名的格式如下: collection-0--4989330656807016483.wt collection-2--4989330656807016483.wt collection-4--4989330656807016483.wt 。. . 除了数据大小的方式,我如何知道这些文件名和真实集合名称之间的关系?
问问题
6137 次
4 回答
6
我找到了命令“db.collection.stats()”显示wiredTiger.metadata.uri的方式,它定义了集合的逻辑名称和文件名之间的关系
于 2015-05-15T01:19:36.997 回答
1
用这个
db.getCollection('collection_name').stats()
于 2017-06-07T09:12:18.733 回答
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.
于 2020-10-27T14:05:01.937 回答
-2
您可以通过查询 GridFS 集合来查询有关您的大数据文件 (> 16 M) 的信息,具体而言:
db.fs.files - 存储文件的元数据。db.fs.chunks - 存储二进制块
于 2015-05-13T12:20:36.987 回答