【发布时间】:2022-11-16 13:25:07
【问题描述】:
我的数据库结构如下,它只有products中的一个document和nested array,由ref到product document's id组成。
{
_id:"6371e078393a5194cc674369"
data: Array
[0]:{
image:
title:
products: Array
[0]:product1Id
[1]:product2Id
[2]:product3Id
},
[1]:{
image:
title:
products: Array
[0]:product2Id
[1]:product3Id
[2]:product4Id
},
}
我的要求是当我从 product document 中删除 product3 时,我也想删除它的引用。所以在这里我想从嵌套的array中删除product3Id。
更新后的文件看起来像:
{
_id:"6371e078393a5194cc674369"
data: Array
[0]:{
image:
title:
products: Array
[0]:product1Id
[1]:product2Id
},
[1]:{
image:
title:
products: Array
[0]:product2Id
[1]:product4Id
},
}
我的尝试:
result = await homeSpecialModel.updateMany(
{
_id: "6371e078393a5194cc674369",
},
// { $pull: { data: { products: { $eleMatch: new ObjectId(id) } } } } -- 1st try
// { $pull: { "data.products": new ObjectId(id) } } -- 2nd try
);
两者似乎都不起作用!
【问题讨论】:
-
"_id"是 ObjectId 还是字符串? -
它是主文档的 ID,为了更清楚,我更新了问题
标签: node.js mongodb mongoose mongodb-query