使用MongoDB执行自定义更新.净额(1.10)
本文关键字:净额 更新 MongoDB 执行 自定义 使用 | 更新日期: 2023-09-27 18:13:25
我使用的是MongoDB。带有C#的Net 1.10
我想以mongo shell的工作方式进行自定义更新。
例如,在shell中,我可以执行以下操作:
db.myCollection.update({Name: "Test"}, {$set:{SomeProperty: "SomeValue"}})
很明显,我可以用在C#中做到这一点
myCollection.Update(Query.EQ("Name","Test"), Update.Set("SomeProperty", "SomeValue"));
Update()
函数采用参数IMongoQuery
和IMongoUpdate
。我想做的是进行一个更新,使用BsonDocument
作为查询,BsonDocument
作为更新。
=>Update(BsonDocument value, BsonDocument update);
我之所以想要这个,是因为我对BsonSerializer有很多问题,这让我很难进行某些复杂的更新。
现在我查找了这两个接口,但它们都是空的。因此,我无法创建自己的IMongoQuery
和IMongoUpdate
实现(因为没有什么可实现的(。
那么,有没有什么方法可以使用BsonDocuments调用MongoDB的基本函数,而不是提供的迫使我使用(工作不太好的(BsonSerializer和ClassMapper的函数?因为他们惹恼了我。
额外的问题:MongoDB有什么样的替代库。网我尝试了2.0,它在我的inEVERY函数上强制使用async
和泛型,这是不可接受的。1.10甚至不能完成(在我看来(最基本的功能(将BsonDocuments作为参数传递(
我偶然发现了这些(上帝保佑IntelliSense(。
有两个类,QueryDocument
和UpdateDocument
,它们都是简单扩展的BsonDocument
,实现了完全空的接口IMongoQuery
和IMongoUpdate
。它们确实有一些额外的(大多数是不推荐使用的(构造函数重载,但没有自己的属性或方法。还有CCD_ 15,这与CCD_。
因此,通过使用它们,可以无限制地使用任何BsonDocument
进行更新、查询和其他功能。
我真的要赞扬API的开发人员如何试图向用户隐藏这些内容。他们没有Update(BsonDocument value, BsonDocument update);
函数,而是创建了两个空接口并创建了两种扩展类。干得好!