将 Bson 复制到另一个变量而不更改原始变量?

Copy the Bson to another variable without changing original?

我想在变量和临时变量中保留一个 BsonDocument。哪个应该使用不同的内存并且改变一个不会影响另一个。我如何实现这一目标。当我更改临时变量时,原始变量也 changed.using c# dotnet core 3.1

var obj1 = await db.GetBuildingName(); //from db bsondocuments
var obj2 = await db.HierarchyCatalogues();//from db list of bsondocuments

var tempobj = new BsonDocument();
tempobj = obj1;

BsonArray catlist = new BsonArray();
foreach (var term in obj2) { catlist.Add(term); }

tempobj.Add(new BsonElement("metadata", catlist));

当我将元数据添加到 tempobject 时,它也反映在 obj1

与所有引用类型一样,如果您想拥有一个实例的副本,则必须克隆该对象。 BsonDocument实现了两种克隆方法:Clone(浅克隆)和DeepClone。我想你在寻找 DeepClone 解决方案:

using MongoDB.Bson;

var tempobj = obj1.DeepClone().ToBsonDocument();