![](/img/trans.png)
[英]Represent an Embedded MongoDB Document when defining an Entity Class in C#
[英]MongoDB embedded document delete
我一直在對MongoDB進行實驗。 收集如下( 樣本 )。 項目本 ,在這個類95的DeleteAlbum
線具有的功能。
{
"_id": {
"$oid": "50e34afce4b0bc114fea2a7e"
},
"Ad": "Tarkan", //Artist
"Albums": [
{
"_id": {
"$oid": "50e34afce4b0bc114fea2a4e"
},
"Isim": "DUDU", //Name
"Yil": 2005, //Year
"Resim": "http://www.gercekpop.com/wp-content/uploads/2003/12/tarkan-dudu.jpg" //Image
},
{
"_id": {
"$oid": "50e34afce4b0bc114fea2a3e"
},
"Isim": "Kuzu Kuzu",
"Yil": 2008,
"Resim": "http://o.scdn.co/300/bf6423177c32224f25dc742f3ffe5450e441d68d"
}
]
}
第75行CreateAlbum
函數中的Add
方法正在工作。
Artist.Albums.Add(Album)
Return Collection.Save(Artist, SafeMode.True).Ok
但是DeleteAlbum
Remove
方法不起作用。
Artist.Albums.Remove(album)
Return Collection.Save(sanatci, SafeMode.True).Ok
刪除嵌入文檔應采用什么方法? 謝謝您的幫助。
以下是通過_id
(在C#中)從包含該元素的第一個文檔的Albums
數組中刪除元素的方法:
var query = Query.EQ("Albums._id", new ObjectId("50e34afce4b0bc114fea2a4e"));
var update = Update.Pull("Albums", new BsonDocument(){
{ "_id", new ObjectId("50e34afce4b0bc114fea2a4e") }
});
collection.Update(query, update);
我不太懂VB,但是您的DeleteAlbum
方法應該更改為:
Public Function DeleteAlbum(Artist As Sanatci, album As Album) As Boolean
Try
Return Collection.Update(
Query.EQ("Albums._id", album._id),
Update.Pull("Albums", Query.EQ("_id", album._id)), SafeMode.True
).Ok
Catch ex As MongoCommandException
Dim msgLog As String = ex.Message
Return False
End Try
End Function
Mongo與Linq-to-SQL或Entity Framework不同。 您無需調用Artist.Albums.Remove(album),然后嘗試將對象的新狀態保存到集合中,而需要調用集合的.Remove()函數。
本文介紹了如何在C#中執行此操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.