1

我被困在寻找解决问题的方法中。我用谷歌搜索,但似乎没有结果。我想将现有集合作为字段添加到另一个集合。我有两个名为productsand的集合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) { }
}
4

1 回答 1

0

向您的实体添加一个字段以保存更新:

 public List<Update> Updates {get; set;}

然后使用 MongoDB 运算符$push将您的更新添加到此字段。有关更多信息,请参阅$push 上的文档。

请注意,如果您这样做并且您还将更新存储在更新集合中,则您正在存储数据的副本,并且一旦添加更新,就不能简单地修改更新。您可能希望在查询时手动加入这两个集合(即获取实体,然后获取它的所有更新),或者您可能只想完全消除更新集合并将它们仅存储在实体中。

根据您到目前为止所展示的内容,看起来消除更新的集合并将它们简单地嵌套为实体内的复杂对象是正确的方法,因为更新不能独立。

但是,如果您期望进行大量更新,则不能这样做,因为您将超过最大文档大小,因此您将返回单独存储它们。

于 2013-10-04T16:21:49.980 回答