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