对于 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/