MongoDB更新查询以静默方式失败

时间:2011-02-16 19:03:06

标签: mongodb mongoid

我有一个在MongoDB上使用Mongoid的应用程序,并且更新失败了。

代码如下所示:

# Are we getting a new attribute? Yes we are!
p "attr first name = #{@attributes['first_name']}"

if user.update_attributes!(@attributes)
   u = User.find(params[:id]).to_json
end

此代码中不会引发异常。所以我查看了我的MongoDB日志,并根据mongo尝试做的事情构建了这个查询:

db.users.update({ "_id": "4d5561276ce886c496000001" }, { $set: { "first_name": "Erinamodobo" } }, false);

现在这不会导致任何异常,但是当我抓住应该使用此查询更新的记录时:

db.users.find({"email":"escharling@somecompany.com"})

我看到“first_name”属性尚未更新。

知道为什么会这样吗?听起来很蠢。

谢谢!

3 个答案:

答案 0 :(得分:1)

你需要找出什么

user.update_attributes!(@attributes)

实际上正在做。这可能是Mongoid的一个问题。配置Mongoid时,可以设置记录器。在那里你应该能够看到驱动程序写入MongoDB的内容,这应该有助于回答你的问题。接下来最好的做法是将您的代码发布到Mongoid邮件列表(http://groups.google.com/group/mongoid),其中与Mongoid一起工作的人可能会知道正在发生的事情。

答案 1 :(得分:1)

将Mongoid更新到最新的rc.7解决了这个问题

答案 2 :(得分:0)

在您的操作中启用“安全模式”。