8

我使用带有 WiredTiger 存储引擎的 MongoDB 3.0。当我在 dbPath 中检查 Mongo 文件时,我看到文件名的格式如下: collection-0--4989330656807016483.wt collection-2--4989330656807016483.wt collection-4--4989330656807016483.wt 。. . 除了数据大小的方式,我如何知道这些文件名和真实集合名称之间的关系?

4

4 回答 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 - 存储二进制块

更多信息可在此处获得 http://docs.mongodb.org/manual/core/gridfs/

于 2015-05-13T12:20:36.987 回答