我想通过Ruby代码更新MongoDB中的文档。我有文档ID,我只想更新特定字段。我尝试了以下代码。
collection.update({"_id".to_s => doc_id},{"$set"=> {"selected" => "false"}})
以及
collection.update({"_id".to_s => doc_id},{"selected" => "false"})
两个命令执行时没有任何错误,但数据库不受影响。
答案 0 :(得分:0)
According to the documentation,更新文档的方法是
collection.update({"_id" => id}, doc)
或
collection.update({"_id" => id}, {"$set" => {"name" => "MongoDB Ruby"}})
该ID应该是有效的ID。我不确定是否接受字符串,以防确保将其转换为BSON::ObjectId
。
collection.update({"_id" => BSON::ObjectId.from_string(doc_id) }, {"$set" => {"selected" => "false" }})
确保检查命令返回true
。
另请注意,如果您使用的是驱动程序版本< 1.8,您应该使用:safe => true
。
驱动程序将在每次写入后发送getlasterror命令,以确保默认情况下写入成功。在驱动程序版本1.8之前,默认情况下不会确认写入,因此必须明确指定选项':safe =>写'确认'为真。情况已不再如此。