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 属性。就我而言,我不需要它,所以我删除了它,然后它就开始工作了。
我有一系列 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 属性。就我而言,我不需要它,所以我删除了它,然后它就开始工作了。