MongoDB LINQ:在不支持的地方用谓词计数?
MongoDB LINQ: Count with predicate inside Where not supported?
我有一组文档,看起来有点像:
{
"_id": {
"$oid": "620d91300adfc5baaafc3006"
},
"Results": [
{
"LabelIndex": 18,
"Label": "modal",
"Probability": 2.264034495769797e-26
},
{
"LabelIndex": 10,
"Label": "galaxy",
"Probability": 2.4459039011662245e-34
}
]
}
我想通过以下查询使用 LINQ 查询此集合:
var results = documents
.Where(x => x.Results.Count(y => y.Probability > .7) > 1)
.ToList();
但是这会导致:
InvalidOperationException
Count({document}{Results}.Where(({document}{Probability} > 0.7))) is not supported.
我做错了什么?
我直觉认为 LINQ 提供程序没有使用聚合管道,所以我将查询重写为:
var results = mcips
.Select(x => new
{
Image = x.Image,
Results = x.Results.Where(y => y.Probability > .7)
})
.Where(x => x.Results.Count() > 1)
.ToList();
这行得通,但如果能理解 为什么 原来的查询行不通,以及是否有更简单的方法来解决这个问题,还是很好理解的。
我有一组文档,看起来有点像:
{
"_id": {
"$oid": "620d91300adfc5baaafc3006"
},
"Results": [
{
"LabelIndex": 18,
"Label": "modal",
"Probability": 2.264034495769797e-26
},
{
"LabelIndex": 10,
"Label": "galaxy",
"Probability": 2.4459039011662245e-34
}
]
}
我想通过以下查询使用 LINQ 查询此集合:
var results = documents
.Where(x => x.Results.Count(y => y.Probability > .7) > 1)
.ToList();
但是这会导致:
InvalidOperationException
Count({document}{Results}.Where(({document}{Probability} > 0.7))) is not supported.
我做错了什么?
我直觉认为 LINQ 提供程序没有使用聚合管道,所以我将查询重写为:
var results = mcips
.Select(x => new
{
Image = x.Image,
Results = x.Results.Where(y => y.Probability > .7)
})
.Where(x => x.Results.Count() > 1)
.ToList();
这行得通,但如果能理解 为什么 原来的查询行不通,以及是否有更简单的方法来解决这个问题,还是很好理解的。