包含mongo文档的节点中的FindAll

时间:2019-05-06 15:27:13

标签: 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的事情。

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

所以我想有些事情是不对的……查询部分,查找部分……可能都是两者。我真的不知道。

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

1 个答案:

答案 0 :(得分:1)

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

语法如下:

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

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

尝试使用以下查询替换collection.deleteOne()(result);

collection.deleteMany(query).exec()