Wie kann ich löschen verschachtelte array-element in eine mongodb-Dokument mit der c# - Treiber

Ich bin neu in der Mongodb world und jetzt bin ich kämpfen, wie kann ich die delete -, update-element in eine verschachtelte array-Feld eines Dokuments. Hier ist mein samle Dokument:

{
    "_id" : ObjectId("55f354533dd61e5004ca5208"),
    "Name" : "Hand made products for real!",
    "Description" : "Products all made by hand",
    "Products" : [ 
        {
            "Identifier" : "170220151653",
            "Price" : 20.5,
            "Name" : "Leather bracelet",
            "Description" : "The bracelet was made by hand",
            "ImageUrl" : "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQii6JCvXtx0iJGWgpvSl-KrdZONKYzDwS0U8uDvUunjO6BO9Aj"
        }
    ]
} 

In meiner Methode bekomme ich die id des Dokuments und die id(Kennung) des Produkts, die ich löschen möchte. Kann mir jemand sagen wie kann ich das löschen aus dem Produkte-Feld, das element mit Id: 170220151653 ?

Habe ich versucht:

var query = Query.And(Query.EQ("_id", categoryId), Query.EQ("Products.Identifier", productId));

            var update = Update.Pull("Products", new BsonDocument(){{ "Identifier", productId }});

            myDb.Applications().Update(query, update);

als hier vorgeschlagen: MongoDB entfernen Sie ein Filialdokument Dokument von einem Filialdokument

Aber ich bekomme eine Fehlermeldung bei

myDb.Anwendungen()

Es einfach nicht gefunden werden.

GELÖST:

var pull                = Update<Category>.Pull(x => x.Products, builder => builder.EQ(q => q.Identifier, productId));
            collection.Update(Query.And(Query.EQ("_id", ObjectId.Parse(categoryId)), Query.EQ("Products.Identifier", productId)), pull);
Schreibe einen Kommentar