当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用MongoDBC#驱动程序获取MongoDB集合的创建日期?》经验,为你挑选了2个好方法。

我需要遍历MongoDB数据库中的所有集合,并获得创建每个集合的时间(我知道我可以获取集合中每个对象的时间戳,但我宁愿不去那个路径,如果一个存在更简单/更快的方法).

这应该让你知道我正在尝试做什么:

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

Gates VP.. 5

“创建日期”不是集合元数据的一部分。集合创建时不“知道”。一些索引具有ObjectId()表示时间戳的,但这是不一致的并且不可靠。

因此,我不认为这可以做到。



1> Gates VP..:

“创建日期”不是集合元数据的一部分。集合创建时不“知道”。一些索引具有ObjectId()表示时间戳的,但这是不一致的并且不可靠。

因此,我不认为这可以做到。



2> Chris Fulsto..:

据我所知,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;
}

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有