gpt4 book ai didi

c# - 如何在 C# Mongodb 强类型驱动程序中删除嵌套文档数组中的元素

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:44 24 4
gpt4 key购买 nike

我正在使用官方 C# MongoDb 强类型驱动程序版本 2.5.0 与 MongoDB 进行交互。

考虑以下类:

public class Author
{

public Author()
{

}

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

public string FirstName { get; set; }

public string LastName { get; set; }

public string BirthDate { get; set; }

public string ScientificDegree { get; set; }

public Library Library { get; set; }
}

public class Library
{
public DateTime DateAdded { get; set; }

public DateTime LastModified { get; set; }

public List<Book> Books { get; set; }

[BsonDefaultValue(0)]
public int ReadCount { get; set; }

}

如何使用作者库中的 id 删除一本书?这是我直接从数组中删除一个元素的代码。

var field = new ExpressionFieldDefinition<Library, List<Book>>(library => library.Books);

var bookFilter = Builders<Book>.Filter.Eq(book => book.Id, bookId);

var update = Builders<Library>.Update.PullFilter(field, bookFilter);

//How to apply the update to the author using author id

最佳答案

您需要获取存储的 Library 并对该 Library 对象执行更改并将其更新回文档。您可以使用 PullFilter 删除它的另一种方法

var update = Builders<Author>.Update.PullFilter(x=>x.Library.Books,Builders<Book>.Filter.Eq(x=>x.id,bookId));
db.Author.UpdateOneAsync(x => x.Id.Equals(autherId), update).Result;

db.Author是集合实例

关于c# - 如何在 C# Mongodb 强类型驱动程序中删除嵌套文档数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49789258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com