MongoDBRef在C#中查询MongoDB

MongoDBRef在C#中查询MongoDB,c#,mongodb,.net-core,mongodb-.net-driver,C#,Mongodb,.net Core,Mongodb .net Driver,我正在尝试获取一个用户的所有照片,通过其用户ID引用进行查询。(我知道Mongo中的嵌入式文档,但我想这样使用它) 以下是我得到的错误:“System.InvalidOperationException:“{UserId.$id}.ToString()不受支持” 这里的问题是,.Find()方法将表达式作为参数,然后当您点击时,.ToList()MongoDB驱动程序尝试将此类表达式转换为MongoDB查询/聚合语言。MongoDB.NET驱动程序不理解{UserId.$id}.ToString

我正在尝试获取一个用户的所有照片,通过其用户ID引用进行查询。(我知道Mongo中的嵌入式文档,但我想这样使用它)

以下是我得到的错误:
“System.InvalidOperationException:“{UserId.$id}.ToString()不受支持”


这里的问题是,
.Find()
方法将
表达式
作为参数,然后当您点击
时,.ToList()
MongoDB驱动程序尝试将此类表达式转换为MongoDB查询/聚合语言。MongoDB.NET驱动程序不理解
{UserId.$id}.ToString()
,因此会出现异常

要解决此问题,您应该尝试另一种方法-将内存中的变量转换为存储在数据库中的类型,请尝试:

var userIdConverted = ObjectId.Parse(userId); // or use string if it's string in your database 
var dbRef = new MongoDBRef("colName", userIdConverted); 
var photos = _photos.Find(photo => photo.UserId.Id.ToString() == dbRef );

帖子中的图片而不是代码将花费选票,这反过来可能没有人会看这个问题。@JoelCoehoorn谢谢你让我知道,并感谢你的否决票。我现在正在编辑它。但是你能提供一个原因吗,因为我不知道。从午餐回来。不是我投的反对票;只是想知道为什么它可能在那里。但是有很多理由不使用图像,除了实际得到答案和粘贴代码更容易之外:谢谢@JoelCoehoorn。实际上,我选择了一张图片来强调它崩溃的地方(我认为这是一个不寻常的地方),代码不多,只有几行。但事实上,我从未想过其他不利因素。
public List<User> GetAllUsers() => _users.find(user => true).ToList();
    public class User
    {
        [BsonRepresentation(BsonType.ObjectId)]
        [BsonId]
        public string Id { get; set; }

        public string Name { get; set; }
    }
    public class Photo
    {
        [BsonRepresentation(BsonType.ObjectId)]
        [BsonId]
        public string Id { get; set; }

        public MongoDBRef UserId { get; set; }
    }
var userIdConverted = ObjectId.Parse(userId); // or use string if it's string in your database 
var dbRef = new MongoDBRef("colName", userIdConverted); 
var photos = _photos.Find(photo => photo.UserId.Id.ToString() == dbRef );