C# 如何使用C在MongoDB上获取上一条或下一条记录#

C# 如何使用C在MongoDB上获取上一条或下一条记录#,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我想根据记录的insert datetime获取上一条记录和下一条记录 在检查完之后,我仍然不知道该怎么做 任何人都可以帮助我,使用C#或Linq?id字段的4个高阶字节表示时间戳,您可以基于该字段进行查询。时间戳仅精确到1秒,因此按_id排序文档并不保证按插入时间严格排序。但是,它确实为您提供了严格的文档排序,大致按插入时间排序 如果这对您的案例来说足够好,下面是一些示例代码 保存在集合中的示例文档: class Entity { public ObjectId Id { get; s

我想根据记录的insert datetime获取上一条记录和下一条记录

在检查完之后,我仍然不知道该怎么做


任何人都可以帮助我,使用C#或Linq?

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

如果这对您的案例来说足够好,下面是一些示例代码

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

class Entity
{
    public ObjectId Id { get; set; }
}
假设我们有一些MongoCollection
集合
,我们可以找到实体对象
实体
的上一条记录,如下所示:

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));
}
IMongoQuery query=query.LT(“\u id”,entity.id);
IMongoSortBy sort=SortBy.Descending(“_id”);
MongoCursor=collection.Find(query).SetSortOrder(sort).SetLimit(1);
if(cursor.Size()>0)
{
实体previousEntity=cursor.First();
WriteLine(string.Format(“找到{0}作为前一个条目。”,previousEntity.Id));
}

如果不构建自己的自定义解决方案(如将上一个/下一个ID存储在某个位置),您就无法真正做到这一点。我误解了这个问题,因此这里是我的原始答案,作为注释
db[“collection”].Find().SetSortOrder(排序方式为升序(_id))将返回按创建日期/时间排序的所有文档。
\u id
包含创建日期。