Mongoose删除文档中的数组元素并保存

2023-12-12

我的模型文档中有一个数组。我想根据我提供的密钥删除该数组中的元素,然后更新 MongoDB。这可能吗?

这是我的尝试:

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var favorite = new Schema({
    cn: String,
    favorites: Array
});

module.exports = mongoose.model('Favorite', favorite, 'favorite');

exports.deleteFavorite = function (req, res, next) {
    if (req.params.callback !== null) {
        res.contentType = 'application/javascript';
    }
    Favorite.find({cn: req.params.name}, function (error, docs) {
        var records = {'records': docs};
        if (error) {
            process.stderr.write(error);
        }
        docs[0]._doc.favorites.remove({uid: req.params.deleteUid});

        Favorite.save(function (error, docs) {
            var records = {'records': docs};
            if (error) {
                process.stderr.write(error);
            }
            res.send(records);

            return next();
        });
    });
};

到目前为止,它找到了该文档,但删除或保存都有效。


您还可以直接在 MongoDB 中进行更新,而无需加载文档并使用代码修改它。使用$pull or $pullAll运算符从数组中删除项目:

Favorite.updateOne({ cn: req.params.name }, {
    $pullAll: {
        favorites: req.params.deleteUid,
    },
});

然后从数组中删除对象

Favorite.updateOne({ cn: req.params.name }, {
    $pullAll: {
        favorites: [{_id: req.params.deleteUid}],
    },
});

(您也可以对多个文档使用 updateMany)

http://docs.mongodb.org/manual/reference/operator/update/pullAll/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose删除文档中的数组元素并保存 的相关文章

随机推荐

  • ES6 深层嵌套对象解构

    我有一个名为this props其中包含 actions Object dirty false form Statement autofill function statement Object statement包含 firstName
  • 将 getopt 与 gdb 一起使用

    刚刚合并getopt进入我的main func getopt设置全局变量optarg对于每个呼叫 逐步通过main with gdb after getopt call optarg总是NULL e g gdb p optarg yet p
  • 使用 jQuery Tablesorter 将行添加到表时如何保留分页器状态?

    我正在使用表排序器插件 http tablesorter com docs 使用jquery 1 4 2 现在我的问题是这样的 用户可以动态地将行添加到表中 但这似乎搞乱了分页 与第一个一样 它会添加到行的第一个 页面 但如果您要转到第二页
  • Symfony 3 中的包罗万象的路线

    我在 Symfony2 中有一个包罗万象的后备路线 但我无法在 Symfony3 中使用 我尝试了这种精确的语法 我的 Symfony2 路线的逐字副本 但没有成功 fallback path req defaults controller
  • 如何获取youtube频道中最新上传视频的id

    在 YouTube 上 我如何获取我订阅的频道的最新上传视频的 ID 网址如 v 用于嵌入我在我的服务器端使用 php 截至2015年4月20日 上述答案似乎不再有效 以下是使用 YouTube 频道 ID 的示例 可以在频道页面的源代码中
  • KivyMD,在android中看不到图标,但在linux上可以工作

    我刚刚使用 buildozer 创建了 apk 文件 但是正如我在主题中所说 在设备上看不到任何图标 在 Linux 中一切正常且看起来很好 但在设备中 所有图标都是空白的 这是我的 buildozer init 要求 我的 ndk sdk
  • 如何更改 scss mixin 中的全局变量

    主题变量 scss Declare a global variable and set it to red color fg primary text red below mixin is used in styles scss to pa
  • 在 Laravel 5.8 中提交后使用 @error 指令从多个输入字段中定位前一个输入字段

    新的 error指令是Laravel 5 8 13 中引入 因此 不要这样做 old if errors gt has email span errors gt first email span endif 你现在可以这样做 new err
  • 如何在我的项目中使用 Chrome 调试 Angular *ngIf 结构指令?

    我想将 Angular 源代码 源映射附加到我生成的 Angular CLI 项目中 以便我可以调试如下指令 ngIf在 Chrome 中 是否可以以某种方式将调试器附加到ng if ts使用一些 angular json 配置 源映射 或
  • 使用 fsolve 的方程组

    我尝试使用以下方法找到方程组的解scipy optimize fsolve在Python 2 7中 目标是计算化学系统的平衡浓度 由于问题的性质 一些常数非常小 现在对于某些组合我确实得到了正确的解决方案 对于某些参数我找不到解决方案 要么
  • 如何防止Python IDLE在运行新脚本时重新启动

    我使用Python 3 6 1 IDLE 我希望能够运行一系列脚本 同时维护本地环境 变量等 就像我已将所有命令逐行输入到 shell 中一样 但是 每当我执行脚本时 环境都会重新启动 并且我会丢失之前执行的所有变量 我可以采取什么措施来防
  • Pandas 数据框中值的矢量化查找

    我有两个 pandas 数据框 其中一个称为orders另一个叫daily prices daily prices如下 AAPL GOOG IBM XOM 2011 01 10 339 44 614 21 142 78 71 57 2011
  • java.util.Scanner 跳过输入请求[重复]

    这个问题在这里已经有答案了 我正在尝试使用接收输入java util Scanner Scanner scanner new Scanner System in int bla scanner nextInt String blubb sc
  • 是否有使用 ExoPlayer 实现 DASH 的非 YouTube 示例?

    您好 我正在寻找配置示例ExoPlayer for DASH 但我发现的例子使用 Youtube 视频 有没有 YouTube 上没有的视频示例 能DASH可以针对互联网上的任何视频进行配置吗 是的 ExoPlayer 可以通过 HTTP
  • 如何将Yii2的ActiveForm复选框设置为选中状态?

    我正在为 Yii2 ActiveForm 复选框控件的 选中 状态寻找一个简单的解决方案 但我找不到如何设置它的解决方案 我在文档中找不到任何示例 我尝试过操纵渲染代码 但看来我需要修改 ActiveForm 本身 如何让复选框默认选中 好
  • 如何停止oracle撤消进程?

    我想知道如何停止oracle的撤消过程 我试图删除一个大表的数百万行 在过程中我终止了会话 但它开始撤消删除 并且在大约两个小时内数据库变得非常慢 我不想继续撤消过程 有什么办法可以阻止它吗 您无法停止回滚事务的过程 因为这样做会使数据库处
  • 当微调器遮盖锚元素时,如何使用 Selenium 和 Python 单击锚元素?

    我是硒的新手 我已经尝试单击锚元素有一段时间了 我已经尝试过 css selector lint text xpath absolute xpath 但我仍然无法单击它 而是收到此错误消息 selenium common exception
  • Dropbox API 请求令牌不适用于 Python 3?

    我正在使用官方 Dropbox API 维护一个 Python 应用程序 为了要求用户让我的应用程序使用他们的 Dropbox 帐户 我使用了一个使用 DropboxSession 类的小脚本 这显然与我们可以在这篇博文 Include t
  • git merge 覆盖内容

    这是我的情况 我有两个功能分支 A 和 B 我想合并这两个分支 我做了以下事情 创建一个从 A 分支出来的新分支 C 签出新分支C run git merge B从命令行 我希望这两个分支合并 如果对相同文件的更改存在冲突 则该命令应引发合
  • Mongoose删除文档中的数组元素并保存

    我的模型文档中有一个数组 我想根据我提供的密钥删除该数组中的元素 然后更新 MongoDB 这可能吗 这是我的尝试 var mongoose require mongoose Schema mongoose Schema var favor