如何用c#获取MongoDB上的前一个或下一个记录

本文关键字:一个 记录 下一个 何用 获取 MongoDB | 更新日期: 2023-09-27 18:11:40

我想根据记录的插入日期获取前一条和下一条记录。

看完官方文件后,我还是不知道该怎么做。

谁能帮我,用c#或Linq?

如何用c#获取MongoDB上的前一个或下一个记录

_id字段的4个高阶字节表示时间戳,可以根据该字段进行查询。时间戳只能精确到一秒,因此按_id排序文档并不能保证按插入时间严格排序。但是,它确实为您提供了严格的文档排序,该排序大致按插入时间排序。

如果这对您的情况足够好,这里有一些示例代码。

保存在集合中的示例文档:

class Entity
{
    public ObjectId Id { get; set; }
}

假设我们有一些MongoCollection collection,我们可以找到一个实体对象entity的前一个记录,如下所示:

IMongoQuery query = Query.LT("_id", entity.Id);
IMongoSortBy sort = SortBy.Descending("_id");
MongoCursor<Entity> cursor = collection.Find(query).SetSortOrder(sort).SetLimit(1);
if (cursor.Size() > 0)
{
    Entity previousEntity = cursor.First();
    Console.WriteLine(string.Format("Found {0} as the previous entry.", previousEntity.Id));
}