当前位置: 首页 > 知识库问答 >
问题:

通过mongoose在数组的数组中添加/删除项

锺离慈
2023-03-14

我想用相当复杂的方案更新文档。

我想用原子更新来做(而不是在内存中修改它,然后调用.save())。

sessions: {
    type: [
        {
            id: {
                type: 'Number'
            },
            voters: {
                type: [
                    'String'
                ]
            }
        }
    ]
}

});

//////////////////////////////////////////////////////////////

event
    |
    _id 
    |
    name
    |
    sessions[object, object ...]
             |
             id
             |
             voters[string, string ...]

我有事件id(_id)、会话(id)和需要添加/删除项到投票人数组。

EventModel.update(
    { _id: event._id }, 
    { $push: { sessions[?? I have to find session by session.id ??]: "Jhon" } },
    done
);

共有1个答案

华甫
2023-03-14

因此您希望在投票人数组中添加/删除项,该数组位于sessions数组中。您可以为数组使用位置运算符$(https://docs.mongodb.com/manual/reference/operator/update/positional/)

EventModel.update(
    {_id: event._id, "sessions.id": event.sessionId},
    {$push: {"sessions.$.voters": "newStringToAdd"}
)
 类似资料:
  • 我是mongoDB新手,在使用Mongoose从mongoDB中的数组中删除团队对象时遇到困难。我的用户收藏看起来像; 我的移除路线看起来像; 控制台在用户之前和之后记录日志。更新是完全相同的,我没有得到任何错误抛出。控制台的输出。日志(错误、数据)最终被删除 我不知道该怎么解释。我也尝试过不按这里的建议传入userID;https://stackoverflow.com/a/24289161/5

  • 文件: 我想从“数组”项中删除一个项,而不知道文档的_id,只知道元素的id,我有一个查找元素的查询,它在mongodb shell中工作,但在mongoose中不工作, 你知道为什么吗? 你能给我同等的猫鼬吗? 我应该如何从列表中提取该项,而只知道它的_id?

  • 问题内容: 假设采用以下架构,我尝试使用Mongoose保存一些GeoJSON数据 这就是我尝试保存文档的方式 但是,我在数据库中得到的是 看起来整个位置标签和数据都丢失了。这是定义架构的错误方法还是保存文档的错误方法? 问题答案: 当使用在嵌入式对象中命名的字段时,您需要使用一个对象来定义其类型,或者Mongoose认为您正在定义对象本身的类型。 因此,将您的架构定义更改为:

  • 我有一个arraylist的arraylist,每个arraylist都有相同的点,例如,当您打印时,这是输出 在打印之前,我要删除其x值不等于数组列表索引的所有点 所以输出应该是 我尝试使用remove方法和for循环以及其他方法,但都不起作用。 有人能帮忙吗?

  • 当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片