MongoDB .Net Driver - 从存在于多个文档中的数组中提取多个元素

MongoDB .Net Driver - Pull multiple elements from arrays that exist in multiple documents

我有这段代码从 'fruits' 数组中提取多个元素,它对数据库中的所有 'stores' 执行此操作:

db.stores.update(
  { },
  { $pull: { fruits: { $in: [ "apples", "bananas" ] } } },
  { multi: true }
)

如何使用 .Net 驱动程序将其传输到 C# 代码? UpdateManyAsync 方法应该从命名空间 MongoDB.Driver IMongoCollection 使用,但我不知道如何进行特定的过滤。

Mongo .NET 驱动程序支持使用 untyped document (BsonDocument) 编写脚本。

UpdateMany

Update many documents, equivalent to { 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
}