使用c#从mongodb中的文档数组中删除文档

时间:2015-11-02 18:17:28

标签: arrays mongodb mongodb-query mongodb-.net-driver

我想删除价值最高的价格文件

{
    "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);

1 个答案:

答案 0 :(得分:2)

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);