" ElemMatch"测试数组中至少有一项与查询匹配。 我只想测试所有项目(如LINQ中的Enumerable.All)
Query.ElemMatch("Prices", Query.GTE("Value", criteria.MinPrice))
任何建议都将被接受。 (mongo script,...)
答案 0 :(得分:1)
不是测试每个元素是否与条件匹配,而是使用Query.Not
来确保它们都不会在相反的情况下失败。
e.g。所有值均不小于criteria.MinPrice
Query.Not(Query.ElemMatch("Prices", Query.LT("Value", criteria.MinPrice)));
此方法仅在您具有一致的架构时才有效,其中Prices
中的每个元素始终都有Value
,而Prices
的所有元素都没有Value
没检查。
如果Prices
可能为空,您可能希望排除这些文档
Query.And(
Query.Exists("Prices.0"),
Query.Not(Query.ElemMatch("Prices", Query.LT("Value", criteria.MinPrice)))
);