mongoDB中如何判断一个序列的所有元素是否满足一个条件
In mongoDB how to determines whether all elements of a sequence satisfy a condition
"ElemMatch" 测试数组中至少有一项与查询匹配。
我只想测试所有项目(比如 LINQ 中的 Enumerable.All)
Query.ElemMatch("Prices", Query.GTE("Value", criteria.MinPrice))
任何建议都会被接受。 (mongo 脚本,...)
您可以使用 Query.Not
来确保其中 none 不满足相反的条件,而不是测试每个元素是否都匹配条件。
例如其中所有值均不小于 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)))
);
"ElemMatch" 测试数组中至少有一项与查询匹配。 我只想测试所有项目(比如 LINQ 中的 Enumerable.All)
Query.ElemMatch("Prices", Query.GTE("Value", criteria.MinPrice))
任何建议都会被接受。 (mongo 脚本,...)
您可以使用 Query.Not
来确保其中 none 不满足相反的条件,而不是测试每个元素是否都匹配条件。
例如其中所有值均不小于 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)))
);