gpt4 book ai didi

node.js - Mongoose $pull 正在删除嵌套的整个数组而不是数组中的单个值

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:41 26 4
gpt4 key购买 nike

我有一个如下所示的 mongo 架构:

{
"_id" : ObjectId("58e4222497b2735ba3cd9ec4"),
"place" : "",
"plant" : "Test1",
"eventDate" : ISODate("2017-04-05T00:00:00Z"),
"event" : "Test123",
"toBeTested" : [
{
"_id" : ObjectId("58e453a07c9f94702ebac93d"),
"thingsTested" : [
"A1",
"A2",
"A3"
]
}
]}

我正在使用 mongoose 删除 thingsTested 的单个元素。我在 Mongoose 中的代码是:

Layout
.update(
{_id: req.params.parentid},
{$pull: {toBeTested: {thingsTested: 'A3'}}},
function (err, docs){
if (err) {
res.send(err);
}
res.json(docs);
}
);

如您所见,我已硬编码表示要从 thingsTested 集中删除 A3。但是,所表现出的行为是所有 thingsTested 都被删除。

作为后续问题,如何确保 mongoose 命令仅删除 thingsTested_id58e453a07c9f94702ebac93d(子 ID)的 A3

谢谢!

最佳答案

您必须在查询中选择一个外部数组元素,然后可以使用 $ 引用匹配的元素,如下所示:

//                                 ▼ selecting the toBeTested element
update({_id: req.params.parentid, 'toBeTested.thingsTested': 'A3'},
// ▼ referencing the selected element
{$pull: {'toBeTested.$.thingsTested': 'A3'}}});

关于node.js - Mongoose $pull 正在删除嵌套的整个数组而不是数组中的单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com