1
我有這樣一個方案的集合:MongoDB的嵌套查詢刪除
[
Folder: {
_id: ObjectId(...),
Item: [{
_id: ObjectId(...),
Version: [{
_id: ObjectId(...),
ConfirmedDevices: [ObjectId(...), ...]
}, ...]
}, ...]
}
]
我需要從ConfirmedDevices
陣列的每一個項目的每一個版本去除一定的ID在一定Folder
。換句話說,我有一個folderId,我需要通過選擇文件夾。然後我有一個id列表,其中需要從該文件夾中存在的所有已確認設備中刪除。
我需要通過C#驅動程序來做到這一點。其實我已經寫了這樣做的代碼,但是這需要查詢文件夾中每個項目的每個版本的數據庫。這會導致文件夾上的許多項目出現性能問題。
我在說的是這個邏輯,把它當作一個僞代碼。
for (int i = 0; i < folder.items.Count; i++)
{
for (int j = 0; j < item.versions.Count; j++)
{
db.folders.update(
{"_id": ObjectId("...") },
{ $pull: { "Items." + i + ".Versions." + j + ".ConfirmedDevices": { $in: [ ObjectId("...") ] } } },
{ multi: true }
);
}
}
我知道mongodb的嵌套查詢是在概念的黑暗和貧窮的一面。但我無法證實這是不可能的。
有反正我可以一勞永逸嗎? (經常mongodb查詢就足夠了,我可以將它轉換成C#版本)
是否有您能詳細點什麼辦法?也許舉一個例子吧? –