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



我有一个像这样的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.

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

相关内容