繁体   English   中英

如何使用C#驱动程序在MongoDB上执行$ setIsSubset?

[英]How to perform a $setIsSubset on MongoDB using C# driver?

我正在尝试在MongoDB中使用$ setIsSubset运算符。

文档说我应该这样写:

var values = Enumerable.Range(0, 10).ToArray();
var result = myCollection.Find(x => x.ExternalKeys.IsSubsetOf(values)).ToList();

但是,我得到以下异常:

MongoDB.Driver.dll中发生了'System.ArgumentException'类型的未处理异常

其他信息:不支持的过滤器:{myCollection} {ExternalKeys} .IsSubsetOf(value(System.Int32 []))。

ExternalKeys属性声明为Hashset<int>

我正在使用AFAIK是最新版本的MongoDB 3.4和C#驱动程序2.4.4。

实际上,您实际上希望$in其中“ [40, 30, 20] 中的至少一个”与目标数组匹配。 这是通过AnyIn()

myCollection.Find(
  Builders<BsonDocument>.Filter.AnyIn( x => x.ExternalKeys, new[] { 40, 30, 20 } )
).ToList();

$in不仅用于数组,而且本质上是可以与属性匹配的可能值的列表。 只是MongoDB也将数组视为匹配“任何值”。

这实际上就是您在所谓的“子集”中寻找的内容,因为目标是与任何元素相交的对象进行比较的“子集”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM