使用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()函数采用参数IMongoQueryIMongoUpdate。我想做的是进行一个更新,使用BsonDocument作为查询,BsonDocument作为更新。

=>Update(BsonDocument value, BsonDocument update);

我之所以想要这个,是因为我对BsonSerializer有很多问题,这让我很难进行某些复杂的更新。

现在我查找了这两个接口,但它们都是空的。因此,我无法创建自己的IMongoQueryIMongoUpdate实现(因为没有什么可实现的(。

那么,有没有什么方法可以使用BsonDocuments调用MongoDB的基本函数,而不是提供的迫使我使用(工作不太好的(BsonSerializer和ClassMapper的函数?因为他们惹恼了我。

额外的问题:MongoDB有什么样的替代库。网我尝试了2.0,它在我的inEVERY函数上强制使用async和泛型,这是不可接受的。1.10甚至不能完成(在我看来(最基本的功能(将BsonDocuments作为参数传递(

使用MongoDB执行自定义更新.净额(1.10)

我偶然发现了这些(上帝保佑IntelliSense(。

有两个类,QueryDocumentUpdateDocument,它们都是简单扩展的BsonDocument,实现了完全空的接口IMongoQueryIMongoUpdate。它们确实有一些额外的(大多数是不推荐使用的(构造函数重载,但没有自己的属性或方法。还有CCD_ 15,这与CCD_。

因此,通过使用它们,可以无限制地使用任何BsonDocument进行更新、查询和其他功能。

我真的要赞扬API的开发人员如何试图向用户隐藏这些内容。他们没有Update(BsonDocument value, BsonDocument update);函数,而是创建了两个空接口并创建了两种扩展类。干得好!