【问题标题】:Query MongoDB 'ObjectId' in C# Linq Driver在 C# Linq 驱动程序中查询 MongoDB 'ObjectId'
【发布时间】:2021-02-16 15:50:23
【问题描述】:

我正在尝试通过默认 MongoDB 对象 ID 检索文档。

根据我之前找到的答案,我目前正在使用下面的代码

var collection = _databaseContext.getCollection();
var recordIDFilter = Builders<BsonDocument>.Filter.Eq("id", ObjectId.Parse(recordId));
var query = collection.Find<BsonDocument>(recordIDFilter);

var result = query.ToList();

记录了所有变量后,我确信查询正在正确构建。 但是,当针对 MongoDB 数据库运行代码时,结果被返回为 null,尽管我提供了一个我知道在数据库中的对象 ID

代码 sn-p 中是否有任何明显缺失的内容,或者是否有任何可以建议的故障排除来确定代码未返回结果的原因

【问题讨论】:

    标签: c# mongodb linq


    【解决方案1】:

    使用 LINQ 从 mongo 获取对象的方法要简单得多。 您只需要做一件事,就是将集合转换为 Queryable。

    示例(基于您的代码):

    var collection = _databaseContext.getCollection();
    var result = collection.AsQueryable().FirstOfDefault(c => c.id == recordId);
    

    【讨论】:

    • 使用该功能时,我收到以下错误消息:'BsonDocument' does not contain a definition for 'id' and no accessible extension method 'id' accepting a first argument of type 'BsonDocument' could be found (are you missing a using directive or an assembly reference?)。我同时使用System.LinqMongoDB.Driver.Linq,我应该添加另一个程序集吗?
    • 您好!您是否将您的 mongodb 实体映射到某个类? :)
    • 嗨!我使用 BsonId 属性将它映射到域和响应的类,但它只有在从数据库中检索到数据后才以这种方式分配
    • 好的。 GetCollection() 是通用类型:IMongoCollection&lt;TDocument&gt; GetCollection&lt;TDocument&gt;( string name, MongoCollectionSettings settings = null ),因为 TDocument 使用您的模型和 BsonAttribute :)
    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多