为什么使用Mongoose JS删除嵌入式子文档数组元素无法正常工作?

乔·史莫

1.)我有两个模型:Project和Action:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const ProjectSchema = new Schema({
  _id: Schema.Types.ObjectId,
  title: { type: String, default: "default project title" },
  deadline: { type: Date, default: "2099-01-01T10:30" },
  description: { type: String, default: "default project description" },
  actions: [],
});

module.exports = mongoose.model("Project", ProjectSchema);


const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const ActionSchema = new Schema({
  _id: Schema.Types.ObjectId,
  type: { type: String, default: "none" },
  queued: { type: Boolean, default: false },
  description: { type: String, default: "default description" },
  complete: { type: Boolean, default: false },
  waitingFor: [],
  setting: { type: String, default: "default setting" },
  deadline: {type: Date, default: "2099-01-01T10:30"}
});

module.exports = mongoose.model("Action", ActionSchema);

2.)我有一个服务,destroy服务Action同时更新Project操作子文档数组(即删除操作)并Action从其集合中删除

它收到要从数组中删除的Action的ID。

3.)我尝试了几种方法,但是最接近的方法是:

require("../db");
const mongoose = require("mongoose");
const Action = require("../models/action");
const Project = require("../models/project");

const destroy = async (id) => {
  const filter = { _id: id };
  const action_id = mongoose.Types.ObjectId(id);
  const project_id = mongoose.Types.ObjectId("5fdcd4fdc0d61b7fe59f0940");

  Project.updateOne(
    {},
    {
      $pull: { actions: { _id: id } },
    },
    {
      arrayFilters: [{ "i._id": mongoose.Types.ObjectId(id) }],

      new: true,
    }
  ).then((output => console.log("output of db op: ", output)))

  Action.deleteOne(filter, function (err, output) {
    console.log("output of db op ", output);
  });
};

Action从其集合中删除可以但Project不能更新其action数组。当前,上面的输出是:

db op的输出:{n:1,nModified:0,ok:1}(它找到Project但不更新!

db op {n:1,ok:1,DeletedCount:1}的输出(已成功从Action集合中删除,但Project数组未修改)

Project非常感谢任何有关如何成功更新的建议谢谢!

Ayesha Haider

Pull运算符有时在MongoDB中无法正常工作,因此您可以尝试通过更新进行操作,并将ID作为查询中的objectID直接提供。另外,您需要在更新一中提供您要更新的项目的ID。

 Project.update({ _id: ObjectId(project_id ) },

    { $pull: { actions: ObjectId(action_id ) } },

    { new: true }, function (err, source) {
      if (!err) {
console.log('Source log',source);
Action.deleteOne(filter, function (err, output) {
    console.log("output of db op ", output);
  });
}
else{
console.log('Error in deleting projects and actions')
}

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用doctrine和mongodb更新数组中的嵌入式子文档

来自分类Dev

使用$ timeout删除数组中的元素无法正常工作

来自分类Dev

如何使用nodejs和mongoose查找文档,为什么没有结果?

来自分类Dev

为什么在mongoose中使用find方法时console.log返回空数组?

来自分类Dev

为什么在使用 Mongoose 时不需要 index.js 中的 MongoDB 常量?

来自分类Dev

嵌入式文档的数组元素的$ set的正确语法是什么?

来自分类Dev

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

来自分类Dev

如何在mongodb中使用node.js删除嵌入式(嵌套)文档

来自分类Dev

为什么使用自定义公式的Google文档条件格式无法正常工作?

来自分类Dev

如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

来自分类Dev

什么是非嵌入式活动,为什么android:fitsSystemWindows无法工作?

来自分类Dev

我无法删除文件,rm无法正常工作,为什么?

来自分类Dev

如何使用Mongoengine删除嵌入式文档?

来自分类Dev

为什么git子树阻止初始化嵌入式子模块?

来自分类Dev

为什么我对TASKLIST命令的使用无法正常工作?

来自分类Dev

如何在嵌入式文档数组上使用$ geoNear?

来自分类Dev

使用Presto查询MongoDB嵌入式/嵌套文档的数组

来自分类Dev

为什么我的降低元素高度的算法无法正常工作

来自分类Dev

为什么我的数组编辑无法正常工作?

来自分类Dev

使用Underscore删除使用嵌入式数组的对象

来自分类Dev

为什么嵌入式linux(yocto)无法使用rootfs分区的全部内存?

来自分类Dev

为什么将按钮添加到div元素后,删除按钮ajax调用的onClick无法正常工作?

来自分类Dev

为什么堆栈使用数组,为什么不使用链表

来自分类Dev

_id的Mongoose findOne嵌入式文档

来自分类Dev

_id的Mongoose findOne嵌入式文档

来自分类Dev

为什么我不能使用Redux从React.js中的数组中删除元素

来自分类Dev

为什么接头在angular js中无法正常工作

来自分类Dev

为什么Three.js中的DirectionalLight无法正常工作?

来自分类Dev

为什么Node js res.send无法正常工作?

Related 相关文章

  1. 1

    使用doctrine和mongodb更新数组中的嵌入式子文档

  2. 2

    使用$ timeout删除数组中的元素无法正常工作

  3. 3

    如何使用nodejs和mongoose查找文档,为什么没有结果?

  4. 4

    为什么在mongoose中使用find方法时console.log返回空数组?

  5. 5

    为什么在使用 Mongoose 时不需要 index.js 中的 MongoDB 常量?

  6. 6

    嵌入式文档的数组元素的$ set的正确语法是什么?

  7. 7

    如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

  8. 8

    如何在mongodb中使用node.js删除嵌入式(嵌套)文档

  9. 9

    为什么使用自定义公式的Google文档条件格式无法正常工作?

  10. 10

    如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

  11. 11

    什么是非嵌入式活动,为什么android:fitsSystemWindows无法工作?

  12. 12

    我无法删除文件,rm无法正常工作,为什么?

  13. 13

    如何使用Mongoengine删除嵌入式文档?

  14. 14

    为什么git子树阻止初始化嵌入式子模块?

  15. 15

    为什么我对TASKLIST命令的使用无法正常工作?

  16. 16

    如何在嵌入式文档数组上使用$ geoNear?

  17. 17

    使用Presto查询MongoDB嵌入式/嵌套文档的数组

  18. 18

    为什么我的降低元素高度的算法无法正常工作

  19. 19

    为什么我的数组编辑无法正常工作?

  20. 20

    使用Underscore删除使用嵌入式数组的对象

  21. 21

    为什么嵌入式linux(yocto)无法使用rootfs分区的全部内存?

  22. 22

    为什么将按钮添加到div元素后,删除按钮ajax调用的onClick无法正常工作?

  23. 23

    为什么堆栈使用数组,为什么不使用链表

  24. 24

    _id的Mongoose findOne嵌入式文档

  25. 25

    _id的Mongoose findOne嵌入式文档

  26. 26

    为什么我不能使用Redux从React.js中的数组中删除元素

  27. 27

    为什么接头在angular js中无法正常工作

  28. 28

    为什么Three.js中的DirectionalLight无法正常工作?

  29. 29

    为什么Node js res.send无法正常工作?

热门标签

归档