首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C# Mongodb驱动程序类型方法更新数组文档元素的字段

如何使用C# Mongodb驱动程序类型方法更新数组文档元素的字段
EN

Stack Overflow用户
提问于 2015-08-07 11:53:03
回答 1查看 1.6K关注 0票数 2

使用MongoDB3.0的MongoDB C#驱动程序2.0.1版本,是否可以使用类型化方法更新数组字段文档元素?

例如,我有以下文件:

代码语言:javascript
复制
{
     Name:"Ken",
     ContactNo:[ { Number:"123", Type:"Mobile"},
                  { Number:"456", Type:"Office"},
                  { Number:"531", Type:"Fax"}
                ]
 }

如何使用类型化C#方法执行下列操作:

1)将Type字段更新为ContactNo数组的所有元素为"PABX

2)将ContactNo数组文档元素的Type字段( Number字段等于"123“)更新为"Fiber

3)更新Contact数组的第一个元素,并将其Type字段设置为"Unknown

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 13:30:42

  1. 目前不可能使用位置运算符更新数组中的所有项。见这个StackOverflow问题这个MongoDB问题。但是,如果您提前知道数组中元素的数量(或者可以以某种方式获得它),那么这个方法就可以了: var numberOfElementsInArray = 3;var filter = Builders.Filter.Eq("Name","Ken");var update = Builders.Update.Combine(Enumerable.Range(0,numberOfElementsInArray) .Select(i => Builders.Update.Set(“ContactNo.+i+ ".Type",”PABX“));collection.UpdateOneAsync(filter,update).Wait();
  2. 此代码将使用Number of 123设置ContactNo数组中元素的Number属性为Fiber: var filter = Builders.Filter.And( Builders.Filter.Eq("Name","Ken"),Builders.Filter.Eq("ContactNo.Number",“123”);var update = Builders.Update.Set("ContactNo.$.Type","Fiber");collection.UpdateOneAsync(filter,update).Wait();
  3. 此代码将将ContactNo数组中第一个元素的ContactNo属性设置为Unknown: var filter = Builders.Filter.Eq("Name","Ken");var update =Builders.Update.Set(“ContactNo.Type”,“Uniting”);collection.UpdateOneAsync(filter,update).Wait()

请注意,所有这些代码都假定您有一个名为Contact的类,它对应于您在问题中指定的数据(您的实际类可能被称为其他类,我在这里刚刚称它为Contact ),而collectionIMongoCollection<Contact>的一个实例。

例如:

代码语言:javascript
复制
var client = new MongoClient("mongodb://localhost:27017");
var collection = client.GetDatabase("your database").GetCollection<Contact>("your collection name");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31877097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档