繁体   English   中英

C#Mongodb添加字段

[英]C# Mongodb Add Field

我被困在寻找解决方案来解决我的问题。 我用谷歌搜索,但似乎没有结果。 我想将现有集合作为字段添加到另一个集合。 我有两个集合,分别命名为productsproduct_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM