UpdateMany操作将过滤器指定为_id

时间:2017-01-11 00:49:26

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

我有一系列ObjectIds,我想更新与ObjectIds匹配的所有文档中的属性。所以基本上是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);

但是,当我运行时,我收到以下异常:

  

指定的演员表无效。

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

更新

所以这个查询很好......看起来问题出在我班上。

我的课程是:

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

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

希望这有助于其他人。

1 个答案:

答案 0 :(得分:0)

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

我的课程是:

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

未正确映射ObjectId属性。在我的情况下,我没有必要,所以我删除它,然后它开始工作。