node.js - FindAll 在带有 mongo 文档的 Node 中

标签 node.js mongodb

对于 mongo 和 Nodejs 这两种技术,我真的是新手。

我的 Symfony 项目中有一个文档映射到 mongo 数据库。

    const collection = client.db(dbName).collection('MessageUser');

我想从 mongo 中删除对话中的所有消息。

所以我做了这个:

    socket.on('conv_reset',function (idConv) {
        io.to(room).emit('conv_reset_emit', "For conversation "+idConv+" getting all messages");
        var query = {idConversation : idConv };
        collection.find(query).toArray(function (err,result) {
            if(err) throw err;
            io.to(room).emit('conv_reset_emit', "Delete :" +result);
            collection.deleteOne()(result);
        })
    });

当我查看发出的内容时;我首先有类似 FOR 对话 39 的内容来获取所有消息。

这意味着我正确接收了参数。

然后我想做一些类似于 php 中的 findByIdConversation 的事情。

但是当我查看结果时;删除未定义。

所以我猜有些地方不对…要么是查询部分,要么是查找部分…可能两者都是。我真的不知道。

感谢您的帮助。我认为这是一个非常基本的问题...但我没有正确理解文档。

最佳答案

要从 MongoDB 删除多个文档,您可以使用 deleteMany()类似于 db.collection.deleteMany() 的函数。 它将从集合中删除与过滤器匹配的所有文档。

语法如下:

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>
   }
)

在您的情况下,您应该传递与 find() 函数中传递的相同查询。

尝试将 collection.deleteOne()(result); 替换为如下查询:

collection.deleteMany(query).exec()

关于node.js - FindAll 在带有 mongo 文档的 Node 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56008215/

相关文章:

javascript - 是否可以在没有 npm start 的情况下运行 React 项目?

javascript - 对于具有两个条目的数组,循环将运行 20 次

node.js - 在 travis 上后台运行 Node 服务器

node.js - P12证书 "Not enough data"错误

node.js - ExpressJS 作为编排层?

node.js - 如何在 Mongoose 中创建一个新的数据库?

mongodb - 键值存储是否适合需要 "get all"的用途?

java - 使用 QueryDSL 和 Mongo 转换映射值类型

mongodb - 可以通过索引在 MongoDB 中使 $unwind 快速吗?

node.js - 如何修复 MongoError : unsupporter server version?