使用c#获取id comparasion(gt / lt)的所有MongoDB条目

时间:2017-03-27 22:03:13

标签: c# mongodb .net-core

我有一个像这样的MongoDB连接:

public SessionRepository()
{
    Client = new MongoClient();
    Database = Client.GetDatabase("mnemosyne");
    Collection = Database.GetCollection<SessionModel>("session");
}

我可以得到像这样的MongoDB文档列表:

public List<SessionModel> Get()
{
    var query = this.Collection.Find(new BsonDocument()).ToListAsync();
    var sessions = query.Result;;
    return sessions;
}

我正在尝试使用_id大于某些给定_id的所有文档,如下所示:

public List<SessionModel> GetSinceLast(string id) 
{
    ObjectId oid = new ObjectId(id);
    //var filter = Builders<BsonDocument>.Filter.Gt("_id", oid).ToBsonDocument();
    //var filter = Builders<BsonDocument>.Filter.Gt(x => x["_id"], oid).ToBsonDocument();
    var query = this.Collection.Find(filter).ToListAsync();
    return query.Result;
}

我从GetSinceLast方法得到0结果。我也尝试将Gt切换到Lt但仍为0,所以我怀疑过滤器/查询有问题。

我正在使用mongocsharpdriver 2.4.1

1 个答案:

答案 0 :(得分:1)

Find方法采用过滤器定义或表达式。因此,请将过滤器更新为

// Filter Definition
var filter = Builders<BsonDocument>.Filter.Gt("_id", oid);
var filter = Builders<BsonDocument>.Filter.Gt(x => x["_id"], oid);

此处有更多示例http://mongodb.github.io/mongo-csharp-driver/2.4/getting_started/quick_tour/#query-the-collection