📜  从 mongodb 中的注释数组中删除一个comnent - TypeScript (1)

📅  最后修改于: 2023-12-03 15:36:14.313000             🧑  作者: Mango

从 MongoDB 中的注释数组中删除一个 comment - TypeScript

在类型化的 MongoDB 模型中,删除一个数组中的元素可能会带来一些困惑,但 TypeScript 提供了有效的方法来处理它。在本指南中,我们将介绍从 MongoDB 中的注释数组中删除一个 comment 的步骤。

步骤 1: 连接 MongoDB 数据库

在 TypeScript 项目中连接 MongoDB 数据库并打开注释数组。

import mongoose from 'mongoose';
import { Comment } from './models/comment'; // 导入 MongoDB 模型

mongoose.connect('mongodb://localhost:27017/myapp', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const connection = mongoose.connection;

connection.once('open', () => {
  console.log('MongoDB database connection established successfully!');
});

const comments = await Comment.find();
步骤 2: 在注释数组中删除 comment

使用 Model.update 方法在 MongoDB 注释数组中删除 comment。我们可以使用 $pull 操作符从数组中删除一个 comment。在 $pull 操作符之后,我们需要添加一个对象,该对象包含要从数组中删除的 comment,例如:

const removedComment = await Comment.update(
  { _id: commentId }, // 查询 comment 的 _id
  { $pull: { comments: { _id: commentToDeleteId } } } // 从 comments 数组中删除 comment
);

以上代码将删除 comments 数组中 _idcommentToDeleteId 匹配的 comment。如果成功删除 comment,将返回一个 WriteResult 对象。

完整代码示例
import mongoose from 'mongoose';
import { Comment } from './models/comment';

mongoose.connect('mongodb://localhost:27017/myapp', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const connection = mongoose.connection;

connection.once('open', () => {
  console.log('MongoDB database connection established successfully!');
});

const comments = await Comment.find();

// 假设我们要删除 comments 数组中第一个 comment
const commentId = comments[0]._id;
const commentToDeleteId = comments[0].comments[0]._id;

// 从 MongoDB 中的注释数组中删除 comment
const removedComment = await Comment.update(
  { _id: commentId },
  { $pull: { comments: { _id: commentToDeleteId } } }
);

console.log('Comment removed successfully!');

以上代码从 MongoDB 中的注释数组中删除了一个 comment。