【发布时间】:2019-07-28 01:42:05
【问题描述】:
我将 mongodb 用于我的 .net 核心 web api。我有 2 个模型返回给客户:
public class Model1
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
[BsonElement("name")]
public string Name { get; set; }
}
public class Model2
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
[BsonElement("name")]
public string Name { get; set; }
[BsonElement("data")]
public InnerModel[] Data { get; set; }
}
public class InnerModel
{
[BsonElement("name")]
public string Name { get; set; }
}
在Model 的服务中,我使用 LINQ 的方式如下:
public (List<Model1> models, int data) Get(string x)
{
var result = from m in db.GetCollection<Model1>("model1")
where m.name == x
select m;
var models = result.Skip(y).Take(y).ToList();
return (models, z);
}
这个功能非常好用。
在 Model2 的服务中,我以不同的方式使用 LINQ:
public List<Model2> Get(string x)
{
var result = from m in db.GetCollection<Model2>("model2")
let v = evaluate(m, x)
where v > 0
orderby v descending
select m;
return result.Skip(y).Take(y).ToList();
}
但是第二个Get 函数给了我一个$project or $group does not support <document> 的例外。我看了其他帖子,但我真的不明白他们的意思。
我想我是在我的第一个 Get 中投影文档本身,这行得通吗?是不是因为我的Model2里面有嵌入对象?
【问题讨论】:
标签: c# mongodb asp.net-core .net-core asp.net-core-webapi