我需要遍历MongoDB数据库中的所有集合,并获得创建每个集合的时间(我知道我可以获取集合中每个对象的时间戳,但我宁愿不去那个路径,如果一个存在更简单/更快的方法).
这应该让你知道我正在尝试做什么:
MongoDatabase _database; // code elided var result = _database.GetAllCollectionNames().Select(collectionName => { _database.GetCollection( collectionName ) //.{GetCreatedDate()) });
Gates VP.. 5
“创建日期”不是集合元数据的一部分。集合创建时不“知道”。一些索引具有ObjectId()
表示时间戳的,但这是不一致的并且不可靠。
因此,我不认为这可以做到。
“创建日期”不是集合元数据的一部分。集合创建时不“知道”。一些索引具有ObjectId()
表示时间戳的,但这是不一致的并且不可靠。
因此,我不认为这可以做到。
据我所知,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; }