如何在C#中将新数组插入现有的嵌入式数组?

时间:2017-07-20 14:47:28

标签: arrays mongodb mongodb-.net-driver

我对mongoDB中的数据更新有点问题。我有一个嵌入在文档中的其他数组中的数组(yaaaay ^^)。所以我的收藏是这样的:

{
    "_id" : ObjectId("5965e0b4f1042c4c3f1d8edc"),
    "Builder" : "Google",
    "Family" : "Car",
    "ProductName" : "ABCD_80A_PU170017",
    "ProductNumber" : "N 1",
    "Test" : [ 
        {
            "Num_Test" : "PU170017",
            "Date_Start" : ISODate("2017-07-12T00:00:00.000Z"),
            "Bench": [ 
                {
                    "Room": 1,
                    "Num" : 1,
                    "Designation" : "AC1; AC3",
                    "IP" : "123.456.78.9",
                    "Capacity" : 12,
                }
            ],
            "User" : [ 
                {
                    "Number" : "EBBW396",
                    "Password" : "titi",
                    "Name" : "NDJO",
                    "Surname" : "Charles",
                    "Tel" : "06XXXXXX",
                    "isAdmin" : true
                }
            ]
        }
    ]
}

我想插入一个嵌入“Test”的新数组。

所以我在这里找到了自己的快乐:https://docs.mongodb.com/getting-started/csharp/update/How to use C# to insert document into existing embedded documents?

我写了这段代码:

        static void Main(string[] args)
    {
        IMongoClient client = new MongoClient("mongodb://10.194.157.199:27017");
        IMongoDatabase database = client.GetDatabase("PINEA");
        IMongoCollection<Product> collection = database.GetCollection<Product>("Product");

        var filter = Builders<Product>.Filter.Eq("Test.Num_Test", "PU170017");
        var meter = new Meter();
        meter.Value= 12;
        meter.Date = DateTime.Now;
        var meterList = new List<Meter>();
        meterList.Add(meter);

        var update = Builders<Product>.Update.Push("Result", new Result
        {
            MeterList = meterList
        });

        var result = collection.UpdateOne(filter, update);
    }

但没有任何反应,没有添加或修改。我想念一些重要但我不明白它是什么。

最后,这是我的课程:

class Result
{
    public List<Meter> MeterList { get; set; }
    public List<Problem> Problem { get; set; }
}
class Meter
{
    public int? Value { get; set; }
    public DateTime? Date { get; set; }
}
class Test
{
    public string Num_Test { get; set; }
    public DateTime? Date_Start { get; set; }
    public List<Bench> Bench { get; set; }
    public List<User> User { get; set; }
    public List<Result> Result { get; set; }
}
class Product
{
    public string Builder { get; set; }
    public string Fammily { get; set; }
    public string ProductName { get; set; }
    public string ProductNumber { get; set; }
    public List<Test> Test { get; set; }
}

为了解释上下文,我需要定期更新数组“结果”并保持数据样本。测试结束后,数据不再修改。

PS:我还是学生,但我兼职工作

谢谢

0 个答案:

没有答案