【发布时间】:2011-09-06 20:00:43
【问题描述】:
使用 CLI 连接到我们的 Mongo 实例,您可以使用更新修饰符操作符就好了:
db.users.update({nickname: 'mcoalson'}, { "$addToSet" : { room_ref : "b"}}) db.users.update({nickname: 'mcoalson'}, { "$addToSet" : { room_ref : "c"}}) db.users.findOne({昵称: 'mcoalson'}) { "_id" : ObjectId("4de5e9e982e9556c2a000003"), "昵称" : "mcoalson", “房间参考”:[ “一种”, "d", “乙”, “C” ] }
但是,在同一文档的 node.js 中执行完全相同的操作没有结果。
db.User.update({'nickname': 'mcoalson'}, {"$pullAll": {'room_ref': ["b"]}});
db.User.update({'nickname': 'mcoalson'}, {"$addToSet": {'room_ref': "f"}});
“房间参考”:[ “一种”, "d", “乙”, “C” ]
显然“b”没有被删除,“f”也没有被添加。我已经尝试了我能想到的所有可能的报价方案,但没有任何改变。我可以使用 node.js 代码中的 find() 和 findOne() 并且使用相同的凭据,有什么建议吗?
【问题讨论】:
-
您确定数据库中只有 1 个昵称为“mcoalson”的文档吗?如果没有,您需要通过“多个”选项来一次更新多个文档。
-
请确保您的猫鼬版本是最新的。
update最近有很多错误修正:github.com/LearnBoost/mongoose/commits/master