![](/img/trans.png)
[英]MongoDB - Update field or Add field if not present on BsonDocument C#
[英]C# Mongodb Add Field
我被困在寻找解决方案来解决我的问题。 我用谷歌搜索,但似乎没有结果。 我想将现有集合作为字段添加到另一个集合。 我有两个集合,分别命名为products
和product_update
。 这两个集合兼得ean
场。 所以,我想添加一个product_update
作为现场收集到products
由他们有两个相同的ean
。 这是我的代码:
var collection1 = Database.GetCollection<Entity>("products");
var collection2 = Database.GetCollection<Update>("product_update");
var productupdate = collection2.FindAll();
foreach (var a in productupdate)
{
try
{
var b = collection1.FindOne(Query.EQ("product.ean",a.ean));
BsonDocument product_update = new BsonDocument{
{"ean",a.ean},
{"categody",a.category},
{"list_price_excl_tax",a.list_price_excl_tax},
{"list_price_incl_tax",a.list_price_incl_tax},
{"cost_price",a.cost_price},
{"stock",a.stock},
{"weight",a.weight},
{"currency",a.currency},
{"price_type",a.price_type}
};
//then I wanted to insert this product_update to variable b/query
}
catch (Exception ex) { }
}
在您的实体中添加一个字段以保存更新:
public List<Update> Updates {get; set;}
然后使用MongoDB运算符$push
将您的更新添加到此字段。 有关更多信息,请参见$ push上的文档 。
请注意,如果执行此操作,并且还将更新存储在更新集合中,则将存储数据的副本,并且一旦添加了更新就不能简单地对其进行修改。 您可能希望改为在查询时手动将两个集合加入(例如,获取实体,然后为其获取所有更新),或者您可能只想完全消除Update集合并将其仅存储在Entities中。
根据到目前为止所显示的内容,消除Updates的集合,而将它们作为复杂对象嵌套在Entity内似乎是正确的方法,因为Update无法独立运行。
但是,如果您希望进行大量更新,则您将无法做到这一点,因为这将超出最大文档大小,因此您将需要单独存储它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.