【问题标题】:Delete a value from an array of an object in an array in a Mongo DB document从 Mongo DB 文档的数组中的对象数组中删除一个值
【发布时间】:2021-11-15 04:10:10
【问题描述】:

美好的一天,感谢您抽出宝贵时间回答我的问题!

我正在学习如何编码,这是我在这里的第一个问题:

我有一个 MongoDB 集合,其结构类似于以下示例。每个文档代表一个时期,用户提供了该时期的可用性。

{
    "_id": id,
    "period": 20218,
    "availabilities": [{
        "User": id1,
        "Username": "Cool Guy",
        "Useravailabilities": [9, 13, 14, 28, 29]
    }, {
        "User": id2,
        "Username": "Nice Guy",
        "Useravailabilities": [1, 2, 13, 29, 30]
    }],
}

{
    "_id": id,
    "period": 20219,
    "availabilities": [...],
}
{
    "_id": id,
    "period": 202110,
    "availabilities": [...],
}

我得到一个句点(例如 20218)、一个用户 ID(例如 id2)和一天(例如 13),应该从相应的 Useravailabilities 数组中删除它们。此查询不起作用,有人可以帮忙吗?

DB.updateOne({"period": 20218, "availabilities.User": id2 }, {$pull : {"availabilities.$.Useravailabilities": 13}} )

提前感谢您,祝您度过愉快的一天

【问题讨论】:

    标签: javascript node.js mongodb mongoose mongodb-query


    【解决方案1】:
     DB.updateOne(
        { period: 20218 },
        { $pull: { 'availabilities.$[elem].Useravailabilities': 13 } },
        { arrayFilters: [{ 'elem.User': id2 }] }
      );
    

    【讨论】:

    • 感谢您的回复。现在我得到:Error: Could not find path "undefined.0.User" in schema at castArrayFilters 也许它与我的架构有关? new mongoose.Schema({ period: Number, availabilities: [] })
    • 对不起,我写错了代码。我刚改了,你可以再试一次。
    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 2022-01-09
    • 2021-06-26
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多