簡體   English   中英

從集合中刪除文檔,並從另一個集合中的數組中刪除ID

[英]Delete documents from collection and remove Ids from an array in another collection

我有一個評論集和一個用戶集。 在用戶集合中,我有一些文檔,這些文檔具有一個稱為“ reviews的數組,其中包含來自評論集合的評論的_id。 有時,我去mongo終端並從我的評論集中刪除我不想要的評論。 例如,我將刪除所有沒有特定字段的內容。 問題是我也想刪除評論數組中的評論ID。 我在reviews集合上做了一個簡單的db.collection.remove ,所以很容易。(它將刪除50條評論)。 我想知道如何輕松地刪除評論數組中的ID。 有任何想法嗎? 我用貓鼬,但我想知道碼頭是否有一種簡單的方法。 我認為唯一的關​​聯是ID。

我沒有如何使用$ pull,但是我想讓它在每次刪除特定評論時都拉ID。

您肯定不能通過單個原子更新來完成此操作,因為您有兩個要更新的集合。 您可以做的是依次執行兩個操作,即從reviews集合中刪除特定的reviews ,然后使用$pullAll運算符從users集合中的評論數組中刪除值。

以下mongo shell示例顯示了這一點:

var reviewIds = [
    ObjectId("582ebf010936ac3ba5cd00e2"),
    ObjectId("582ebf010936ac3ba5cd00e3"),
    ...
];

db.reviews.remove({ "_id": { "$in": reviewIds } });
db.users.updateMany(
    { "reviews": { "$in": reviewIds } },
    { "$pullAll": { "reviews": reviewIds } }
);

對於單個評論ID,您可以使用$pull運算符作為

db.reviews.remove({ "_id": reviewId });
db.users.updateMany(
    { "reviews": reviewIds },
    { "$pull": { "reviews": reviewId } }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM