C# 在MongoDB中的嵌套文档中插入新文档
我是MongoDB的初学者。请看下面我的模型C# 在MongoDB中的嵌套文档中插入新文档,c#,asp.net-mvc,mongodb,mongodb-query,nosql,C#,Asp.net Mvc,Mongodb,Mongodb Query,Nosql,我是MongoDB的初学者。请看下面我的模型 public class Technology { public Technology() { ProductGroups = new List<ProductGroup>(); } [BsonRepresentation(BsonType.ObjectId)] public ObjectId _id { get; set; } public string Name {
public class Technology
{
public Technology()
{
ProductGroups = new List<ProductGroup>();
}
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId _id { get; set; }
public string Name { get; set; }
public IEnumerable<ProductGroup> ProductGroups { get; set; }
}
public class ProductGroup
{
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId _id { get; set; }
public string Name { get; set; }
}
公共类技术
{
公共技术()
{
ProductGroups=新列表();
}
[BsonRepresentation(BsonType.ObjectId)]
公共对象id{get;set;}
公共字符串名称{get;set;}
公共IEnumerable产品组{get;set;}
}
公共类产品组
{
[BsonRepresentation(BsonType.ObjectId)]
公共对象id{get;set;}
公共字符串名称{get;set;}
}
现在数据显示如下
我正在尝试将
ProductGroup
(这是一个BsonDocument集合)集合添加到Technology
中 将您的技术模式更改为
[BsonElementAttribute("productgroups")]
public IList<ProductGroup> ProductGroups{ get; set; }
@编码定义我根据v2.0.1.27更改代码 请看下面我的代码。非常感谢你的帮助
var productGroup = new BsonDocument()
.Add("_id", ObjectId.GenerateNewId())
.Add("Name", model.Name);
BsonDocument parent = null;
var _parent = Collection.FindOneByIdAs(typeof(BsonDocument), model._id);
if (_parent != null)
{
parent = _parent.ToBsonDocument();
parent["ProductGroups"] = new BsonArray().Add(BsonValue.Create(productGroup));
Collection.Save(parent);
}
请确保新的子记录未清除现有记录
parent["ProductGroups"] = parent["ProductGroups"].AsBsonArray.Add(productGroup);
parent[“ProductGroups”]
对于任何重构来说都是危险的var-productGroup=new-productGroup{Id=ObjectId.GenerateNewId(),Name=model.Name}代码>
var collection=database.GetCollection(“技术”)代码>
var update=Builders.update.AddToSet(x=>x.ProductGroups,productGroup)代码>
wait collection.FindOneAndUpdateAsync(x=>x.Id==model.\u Id,update)代码>谢谢您宝贵的回复。我试着用这种方法。但是“.FindOneById”无法获得visual studio智能。我使用的是v2.0.1。27@RageshPuthiyedath如果引用了MongoDB.Driver.dll,请检查。如果这不起作用,您可以使用VS intellisense检查任何其他选项。感谢您宝贵的回复。但是我无法在C#intellisenceHow's get collection中获得这个(FindOneAndUpdateAsync)方法?
parent["ProductGroups"] = parent["ProductGroups"].AsBsonArray.Add(productGroup);