使用 CLI 连接到我们的 Mongo 实例,您可以很好地使用更新修饰符运算符:
db.users.update({nickname: 'mcoalson'}, { "$addToSet" : { room_ref : "b"}}) db.users.update({nickname: 'mcoalson'}, { "$addToSet" : { room_ref:“c”}})db.users.findOne({nickname:'mcoalson'}){“_id”:ObjectId(“4de5e9e982e9556c2a000003”),“昵称”:“mcoalson”,“room_ref”:[“a” , "d", "b", "c"] }
但是,在同一文档的 node.js 中执行完全相同的操作没有结果。
db.User.update({'nickname': 'mcoalson'}, {"$pullAll": {'room_ref': ["b"]}});
db.User.update({'nickname': 'mcoalson'}, {"$addToSet": {'room_ref': "f"}});
“room_ref”:[“a”、“d”、“b”、“c”]
显然“b”没有被删除,“f”也没有被添加。我已经尝试了我能想到的所有可能的报价方案,但没有任何改变。我可以使用 node.js 代码中的 find() 和 findOne() 并且使用相同的凭据,有什么建议吗?