我可以从 C# .Net 驱动程序中多个文档中存在的数组中提取多个元素吗
Posted
技术标签:
【中文标题】我可以从 C# .Net 驱动程序中多个文档中存在的数组中提取多个元素吗【英文标题】:Can I pull multiple elements from arrays that exist in multiple documents in C# .Net Driver 【发布时间】:2021-11-22 23:14:40 【问题描述】:我有这段代码从“fruits”数组中提取多个元素,并为数据库中的所有“商店”执行此操作:
db.stores.update(
,
$pull: fruits: $in: [ "apples", "bananas" ] ,
multi: true
)
如何使用 .Net 驱动程序将其转换为 C# 代码? 应该从命名空间 MongoDB.Driver IMongoCollection 中使用 UpdateManyAsync 方法,但我不知道如何进行特定的过滤。
【问题讨论】:
mongo驱动允许字符串和大部分参数之间的隐式转换,所以你可以把字符串 $pull: fruits: $in: [ "apples", "bananas" ]
放到合适的UpdateManyAsync
参数中
【参考方案1】:
Mongo .NET 驱动程序支持使用untyped document (BsonDocument
) 编写脚本。
UpdateMany
更新很多文档,相当于
multi: true
你可以实现如下:
MongoClient _client = new MongoClient("mongo connection string");
IMongoDatabase _database = _client.GetDatabase("your DB");
IMongoCollection<Store> _collection = _database.GetCollection<Store>("store");
string[] removedFruits = new string[] "apples", "bananas" ;
FilterDefinition<Store> filter = Builders<Store>.Filter.Empty;
UpdateDefinition<Store> update =
new BsonDocument("$pull",
new BsonDocument("fruits",
new BsonDocument("$in", BsonArray.Create(removedFruits))
)
);
_collection.UpdateMany(filter, update);
public class Store
public string[] Fruits get; set;
// Other properties
【讨论】:
这个解决方案解决了问题,非常感谢:)以上是关于我可以从 C# .Net 驱动程序中多个文档中存在的数组中提取多个元素吗的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在 C# 中使用单独的线程从 Windows 应用程序打印吗?
在 ASP.NET C# Web 应用程序中使用 ADO.NET 和 XML