我真的是这两个技术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的事情。
但是当我查看结果时,删除未定义。
所以我想有些事情是不对的……查询部分,查找部分……可能都是两者。我真的不知道。
感谢您的帮助。我认为这是一个非常基本的问题...但是我没有正确的方式编写文档。
答案 0 :(得分:1)
要从MongoDB中删除多个文档,可以使用db.collection.deleteMany()
之类的deleteMany()函数。
它将从集合中删除所有与过滤器匹配的文档。
语法如下:
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>
}
)
在这种情况下,您应该传递与在find()函数中传递的查询相同的查询。
尝试使用以下查询替换collection.deleteOne()(result);
:
collection.deleteMany(query).exec()