【发布时间】:2011-03-20 09:23:54
【问题描述】:
我一直在尝试添加到一个数组(或者 ruby 说的是一个数组),但不断收到来自 mongo 的错误,上面写着
无法将 $addToSet 修饰符应用于非数组当我尝试运行时
User.collection.update({'id'=> current.id},{'$addToSet'=>{ 'following' => current.id}}) User.collection.update({'id'=> user.id},{'$addToSet'=>{ 'following' => user.id}})或mongomapper版本
User.push_uniq(current.id, :following => user.id) User.push_uniq(user.id, :followers => current.id)当我输出时
返回真
但是,在运行时
db.users.find()直接反对mongo,我明白了
{ "_id" : ObjectId("4c4a196f15a79004e0000007"), "email" : "test@test.com", "foll
所有者”:null,“以下”:null,“password_hash”:“98f2188de42bce1554d08fbc81
d5c99a2c234933", "password_salt" : "25d80a83cfe3d126cdbe9fec2b731ab9ea57c3b8", "
用户名”:“测试”}
我希望 follower 和 follower 是 [],而不是 null。
当我输出 debug @user.followers 时,rails 显示 --- []
我创建用户的模型是
键:用户名,:类型=>字符串 键 :email, :type => 字符串 键 :password_hash, :type => 字符串 键 :password_salt, :type => 字符串 键:追随者,:类型=>数组 键 :following, :type => 数组该错误使我相信 user.followers 正在被发现,但无法更新。 当我改变
User.push_uniq(current.id, :testing => user.id)
我没有收到错误,所以我认为我的那部分是正确的。 有什么建议吗?
【问题讨论】:
-
这看起来像是 MongoMapper 中的一个潜在错误。我建议将此发布到 MM Google 组。正如您所发现的,数据库中的字段必须以数组开头。
标签: ruby-on-rails mongodb mongomapper