C# MongoDb使用筛选器匹配列表

C# MongoDb使用筛选器匹配列表,c#,mongodb,mongodb-.net-driver,intersection,C#,Mongodb,Mongodb .net Driver,Intersection,我有一份B文件清单: 要这样查询: var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds)); var extractedIds = myIds.Select(x => x["_id"].ToString()).ToList(); 返回属性DeletedCount=0 有人能指出过滤器的错误吗?您必须从B文档中提取id,如下所示: var deleted =list.Del

我有一份B文件清单:

要这样查询:

var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds));
var extractedIds = myIds.Select(x => x["_id"].ToString()).ToList();
返回属性DeletedCount=0
有人能指出过滤器的错误吗?

您必须从B文档中提取id,如下所示:

var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds));
var extractedIds = myIds.Select(x => x["_id"].ToString()).ToList();
之后,您可以在过滤器中使用它

list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", extractedIds));
确保筛选器的_id部分与MessageExchange类的匹配

另一种方法是使其强类型化:

list.DeleteMany(Builders<MessageExchange>.Filter.In(x => x.Id, extractedIds));

您必须从BsonDocument中提取_id,如下所示:

var deleted =list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", myIds));
var extractedIds = myIds.Select(x => x["_id"].ToString()).ToList();
之后,您可以在过滤器中使用它

list.DeleteMany(Builders<MessageExchange>.Filter.In("_id", extractedIds));
确保筛选器的_id部分与MessageExchange类的匹配

另一种方法是使其强类型化:

list.DeleteMany(Builders<MessageExchange>.Filter.In(x => x.Id, extractedIds));

根据Skami的回答,这同样有效:

var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(extractedIds)));
list.DeleteMany(filter);

因此,它与MessageExchange类无关。

根据Skami的回答,这也适用:

var filter = new BsonDocument("_id", new BsonDocument("$in", new BsonArray(extractedIds)));
list.DeleteMany(filter);

因此不与MessageExchange类绑定。

具体包含什么?一份文件清单?还是从JSON输入解析成其他内容?类似于.In_id,myid.Select e=>e.。_id将是一般的方法,但这完全取决于列表中的对象实际是什么类型的。可能首先将该列表从JSON字符串转换为list,然后尝试filteringis。是否有错误消息?因为我假设In转换为$In,它应该有效。您是否尝试过为find?执行它,它返回DeleteResult对象,您研究过吗?过滤器似乎很好,您是否尝试过从MongoDB的终端筛选MessageExchange集合中的记录,以验证这些ID中是否存在记录,以及此筛选器是否存在问题?具体包含哪些内容?一份文件清单?还是从JSON输入解析成其他内容?类似于.In_id,myid.Select e=>e.。_id将是一般的方法,但这完全取决于列表中的对象实际是什么类型的。可能首先将该列表从JSON字符串转换为list,然后尝试filteringis。是否有错误消息?因为我假设In转换为$In,它应该有效。您是否尝试过为find?执行它,它返回DeleteResult对象,您研究过吗?过滤器似乎很好,您是否尝试过从MongoDB的终端筛选MessageExchange集合中的记录,以验证这些ID中是否存在记录,以及此筛选器是否存在问题?您能否指出非字符串类型选项MessageExchange class的方法?@DanielV,这取决于您的MessageExchange类,如果你能把它添加到问题中,我可以试一试。我只是根据你的回答。请你指出哪种方法适用于非字符串类型的选项MessageExchange类?@DanielV,这取决于你的MessageExchange类,如果你能将它添加到问题中,我可以试一试。我只是根据你的回答