它立即返回,我不完全确定预期的行为是什么。它是在后台删除吗?
答案 0 :(得分:0)
在Moped中执行此操作的代码绝对不是异步的,它会在将操作发送到MongoDB时阻塞(并且可能在默认情况下等待来自数据库的响应)。
https://github.com/mongoid/moped/blob/master/lib/moped/query.rb#L290-L307 https://github.com/mongoid/moped/blob/master/lib/moped/node.rb#L466-L468
然而,正如Chris Heald已经提到的那样,如果你使用w = 0的写入关注(所谓的“即发即忘”模式),这告诉Moped不要等待来自服务器的响应。您不会收到remove_all成功完成的确认,但您可以通过此方法有效地将工作提交给MongoDB服务器。
以下是有关MongoDB的写入问题如何适用于未确认写入的更多信息: http://docs.mongodb.org/manual/core/write-concern/#unacknowledged