C# 使用c获取具有id比较(gt/lt)的所有MongoDB条目#
我有这样一个MongoDB连接:C# 使用c获取具有id比较(gt/lt)的所有MongoDB条目#,c#,mongodb,.net-core,C#,Mongodb,.net Core,我有这样一个MongoDB连接: public SessionRepository() { Client = new MongoClient(); Database = Client.GetDatabase("mnemosyne"); Collection = Database.GetCollection<SessionModel>("session"); } public List<SessionModel> Get() { var q
public SessionRepository()
{
Client = new MongoClient();
Database = Client.GetDatabase("mnemosyne");
Collection = Database.GetCollection<SessionModel>("session");
}
public List<SessionModel> Get()
{
var query = this.Collection.Find(new BsonDocument()).ToListAsync();
var sessions = query.Result;;
return sessions;
}
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
方法获取过滤器定义或表达式。因此,请将过滤器更新为
// Filter Definition
var filter = Builders<BsonDocument>.Filter.Gt("_id", oid);
var filter = Builders<BsonDocument>.Filter.Gt(x => x["_id"], oid);
//过滤器定义
var filter=Builders.filter.Gt(“\u id”,oid);
var filter=Builders.filter.Gt(x=>x[“\u id”],oid);
这里有更多的例子谢谢。它引导我走上正确的道路。您的建议生成了另一个编译错误:
参数2:无法从“MongoDB.Driver.FilterDefinition”转换为“System.Linq.Expressions.Expression”
。通过将构建器中的BsonDocument
替换为SessionModel
,我使一切都按预期工作。因此,我的最终定义是:var filter=Builders.filter.Gt(“\u id”,oid)代码>