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