UpdateMany 操作将过滤器指定为 _id in

UpdateMany operation specifying filter as _id in

我有一系列 ObjectIds,我想更新所有与 ObjectId 匹配的文档中的 属性。所以基本上 SQL 相当于:

update collection set prop = false where id in (1,2,3)

我为 Mongo 构建的查询是:

List<BsonValue> output = GetValues();

var builder = Builders<MyCollection>.Filter;
var filter = builder.In("_id", output);
var update = Builders<MyCollection>.Update.Set("Prop", false);
var result = myCollection.UpdateMany(filter, update);

但是,当我 运行:

时出现以下异常

Specified cast is not valid.

知道我做错了什么吗?提前致谢!

更新

所以这个查询很好...看起来问题出在我的 class.

我的 class 是:

public class MyCollection
{
    [BsonId]
    public ObjectId _id { get; set; }
    //Other properties
}

显然 ObjectId 没有被正确映射。我没有明确需要它,所以我删除了它,然后它就开始工作了。

希望这对其他人有帮助。

回答我自己的问题,以便将来对其他人有所帮助。

我的 class 是:

public class MyCollection
{
    [BsonId]
    public ObjectId _id { get; set; }
    //Other properties
}

未正确映射 ObjectId 属性。就我而言,我不需要它,所以我删除了它,然后它就开始工作了。