使用 c# 从 mongodb 中的文档数组中删除文档
Removing a document from array of documents in mongodb using c#
我要删除价值最高的价格文件
{
"name" : "Ryan",
"price" : 6.5
}
来自
db.books.find({_id:5}).pretty()
{
"_id" : 5,
"name" : "Big Book",
"authors" : [
{
"name" : "Ryan",
"price" : 5.5
},
{
"name" : "Ryan",
"price" : 6.5
}
]
}
使用 C# 驱动程序
我在一个集合中有 c# 前端的可移动文档。
但是我下面的更新语句并没有删除文档。
var filter = new BsonDocument("_id", x._id);
var docToRemove = new BsonDocument("name", x.name);docToRemove.Add("price", x.price);
var update = Builders<Book>.Update.Pull("books.authors", docToRemove);
var result = await col.FindOneAndUpdateAsync(filter, update);
您在 x.price
中有所需的值吗?
我没有针对你的情况进行测试,但试试这个:
var update = Builders<Book>.Update.PullFilter(p => p.authors,
f => f.price == x.price);
var result = await collection.FindOneAndUpdateAsync(p => p._id == 5, update);
我要删除价值最高的价格文件
{
"name" : "Ryan",
"price" : 6.5
}
来自
db.books.find({_id:5}).pretty()
{
"_id" : 5,
"name" : "Big Book",
"authors" : [
{
"name" : "Ryan",
"price" : 5.5
},
{
"name" : "Ryan",
"price" : 6.5
}
]
}
使用 C# 驱动程序
我在一个集合中有 c# 前端的可移动文档。
但是我下面的更新语句并没有删除文档。
var filter = new BsonDocument("_id", x._id);
var docToRemove = new BsonDocument("name", x.name);docToRemove.Add("price", x.price);
var update = Builders<Book>.Update.Pull("books.authors", docToRemove);
var result = await col.FindOneAndUpdateAsync(filter, update);
您在 x.price
中有所需的值吗?
我没有针对你的情况进行测试,但试试这个:
var update = Builders<Book>.Update.PullFilter(p => p.authors,
f => f.price == x.price);
var result = await collection.FindOneAndUpdateAsync(p => p._id == 5, update);