mongodb - 如何获取使用 MongoDB C# 驱动程序创建 MongoDB 集合的日期?

标签 mongodb mongodb-.net-driver

我需要遍历 MongoDB 数据库中的所有集合并获取每个集合的创建时间(我知道我可以获取集合中每个对象的时间戳,但我不想那样做如果存在更简单/更快的方法,则路由)。

这应该让您了解我正在尝试做什么:

MongoDatabase _database;
// code elided
var result = _database.GetAllCollectionNames().Select(collectionName =>
    {
        _database.GetCollection( collectionName ) //.{GetCreatedDate())
    });

最佳答案

据我所知,MongoDB 不会跟踪集合的创建日期。但是,自己做这件事真的很容易。添加一个简单的方法,类似这样,并在创建新集合时使用它:

public static void CreateCollectionWithMetadata(string collectionName)
{
    var result = _db.CreateCollection(collectionName);
    if (result.Ok)
    {
        var collectionMetadata = _db.GetCollection("collectionMetadata");
        collectionMetadata.Insert(new { Id = collectionName, Created = DateTime.Now });
    }
}

然后,只要您需要信息,只需查询 collectionMetadata 集合。或者,如果您想使用示例中的扩展方法,请执行以下操作:

public static DateTime GetCreatedDate(this MongoCollection collection)
{
    var collectionMetadata = _db.GetCollection("collectionMetadata");
    var metadata = collectionMetadata.FindOneById(collection.Name);
    var created = metadata["Created"].AsDateTime;
    return created;
}

关于mongodb - 如何获取使用 MongoDB C# 驱动程序创建 MongoDB 集合的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083943/

相关文章:

c# - 如何在 MongoDB C# 驱动程序中按字段值范围选择文档?

spring - 如何在 YML 文件 spring boot 中配置 SSL mongodb 连接?

mongodb - 为什么 MongoDB 不使用 fsync()?

mongodb - 如何在 MongoDB 中查询多个嵌套数据字段

数字的 MongoDB 内部数据类型

c# - 如何在 C# MongoDB 中为多态类映射定义默认鉴别器

c# - 如何将 Bson 文档反序列化为 POCO?

mysql - 包含相关数据的非常大的表。什么样的 DBMS 是最佳的,以及如何对其建模?

java - 使用 $or 和 $in 在 Java 中创建 mongodb 查询

node.js MongoDB查询不返回结果