这个符号是一个占位符,用来更新数组中匹配查询条件的第一个元素。例如,如果你想要更新books数组中title为”The Catcher in the Rye”的元素的author字段,你可以使用以下代码:
1 2 3
var filter = Builders<BsonDocument>.Filter.Eq("books.title", "The Catcher in the Rye"); var update = Builders<BsonDocument>.Update.Set("books.$.author", "J.D. Salinger"); col.UpdateOne(filter, update);
var filter = Builders<BsonDocument>.Filter.Empty; var update = Builders<BsonDocument>.Update.Set("books.$[].price", 9.99); col.UpdateMany(filter, update);
$[<identifier>]符号
这个符号是一个占位符,用来更新数组中匹配arrayFilters条件的所有元素。
如果你想要更新books数组中price大于10的元素的discount字段,你可以使用以下代码:
1 2 3 4 5 6
var filter = Builders<BsonDocument>.Filter.Empty; var update = Builders<BsonDocument>.Update.Set("books.$[elem].discount", 0.8); var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("elem.price", new BsonDocument("$gt", 10))) }; col.UpdateMany(filter, update, new UpdateOptions { ArrayFilters = arrayFilters });
// 定义一个过滤条件,用来匹配你想要更新的文档的_id字段 var filter = Builders<BsonDocument>.Filter.Eq("_id", "01");
// 定义一个更新操作,用来替换caricature数组中name为DeathNote的元素 var update = Builders<BsonDocument>.Update.Set("caricature.$[elem]", newBook);
// 定义一个数组过滤条件,用来指定你想要替换的数组元素的name值 var arrayFilters = new List<ArrayFilterDefinition> { new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("elem.name", "DeathNote")) };
var filter = Builders<BsonDocument>.Filter.Empty; var update = Builders<BsonDocument>.Update.Pull("books", new BsonDocument("author", "J.D. Salinger")); col.UpdateOne(filter, update);
$pullAll
这个符号用来从数组中移除所有匹配指定值的元素。例如,如果你想要从books数组中移除title为”1984”或”The Catcher in the Rye”的元素,你可以使用以下代码:
1 2 3
var filter = Builders<BsonDocument>.Filter.Empty; var update = Builders<BsonDocument>.Update.PullAll("books", new BsonArray { new BsonDocument("title", "1984"), new BsonDocument("title", "The Catcher in the Rye") }); col.UpdateOne(filter, update);