C# 替换数组中的值

C# 替换数组中的值,c#,mongodb,C#,Mongodb,我使用的是Mongodb C#官方驱动程序。我想用其他值更改数组中的特定值。数组包含值列表。例如 { _id: id1, values: [23, 78, 20] } 我想把23换成25。 我知道一个答案,如果它是正确的。 首先我拉动那个元素,然后推动另一个元素。但问题是,如果元素不存在,那么“推”也会插入元素。其次,它将更改位置并在末尾插入元素。 请告诉我怎么做。您应该使用以下方法: db.collection.update({_id: id1, values: 23}, {$

我使用的是Mongodb C#官方驱动程序。我想用其他值更改数组中的特定值。数组包含值列表。例如

{ 
   _id: id1,
   values: [23, 78, 20]
}
我想把23换成25。 我知道一个答案,如果它是正确的。 首先我拉动那个元素,然后推动另一个元素。但问题是,如果元素不存在,那么“推”也会插入元素。其次,它将更改位置并在末尾插入元素。 请告诉我怎么做。

您应该使用以下方法:

db.collection.update({_id: id1, values: 23}, {$set: {'values.$': 25}})

这应该适合你

db.collection.update({ "_id" : id1 }, {$set: {"values.0": 23}});
也检查一下这个帖子

阅读有关位置运算符的内容我已经阅读了,但所有示例都是关于增加值的。好吧,将
$inc
交换为
$set
,您就可以开始了。我已经完成了。但是它在那个数组中插入了空值..我刚刚做了,它按预期工作。您的代码有问题。我认为您需要将
\u id
添加到此答案中。否则,您将使用
更新第一个文档,该值为23,这不是您想要的。@GatesVP:谢谢,它可以工作。但是,如果我想用某个数字替换每次出现的23,该怎么办呢适用于first matched。@HimaniTalesara:您可以重复运行此更新,也可以将文档提取到应用程序中,在那里修改并保存。
db.collection.update({values:23},{$set:{'values.$':25}},false,true)
额外的
false
是“请勿插入”。额外的
true
是“多次执行此更新”。@GatesVP:如果他需要替换同一文档中的多个值,则此操作无效。:)