在mongoDB中如何确定序列的所有元素是否满足条件

时间:2015-08-15 14:49:05

标签: c# mongodb mongodb-query mongodb-.net-driver

" ElemMatch"测试数组中至少有一项与查询匹配。 我只想测试所有项目(如LINQ中的Enumerable.All)

Query.ElemMatch("Prices", Query.GTE("Value", criteria.MinPrice))

任何建议都将被接受。 (mongo script,...)

1 个答案:

答案 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)))
);