MongoDB模型
public class Entity1
{
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
// other properties
}
public class Entity2
{
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Entity1Id { get; set; }
}
现在两个集合实际上都有匹配的记录,但是下面的联接查询返回0条记录
from x in this.Entity1Collection.AsQueryable<Entity1>()
join y in this.Entity2Collection.AsQueryable<Entity2>() on y.Entity1Id
equals x.Id
我发现,由于y.Entity1Id
是string
但x.Id
是ObjectId
,所以连接条件大体上是不匹配的。但是MongoDB文档说[BsonRepresentation(BsonType.ObjectId)]
编写了ObjectId,而读取给出string
时,条件连接实际上应该匹配。
我知道,如果我更改Entity2
并使Entity1Id
为ObjectId
的话,我可以解决此问题,但是除了直接更改实体类之外,还有其他解决方案吗?
有什么方法可以将查询表达式中的字符串转换为ObjectId,例如on ObjectId.Parse(y.Entity1Id) equals x.Id
??
任何想法。请提出建议。
答案 0 :(得分:0)
How to perform $lookup between Stringified id and ObjectId in mongo?
此问题中有关在mongo框架中无法进行强制转换的评论暗示,如果不更改您所说的类型,此操作将无法进行。