在MongoDB中完全删除数组字段

时间:2015-08-05 04:48:39

标签: arrays mongodb

创建Mongo Collection时,我错误地将其中一个字段设置为字符串数组。我现在需要返回并将所有这些数组更改为简单的字符串。我曾尝试使用以下内容首先删除包含字符串数组的字段:

db.messages.update(
    {},
    { 
        '$unset': {"userResponse":1}
    },
    {'multi': true}
)

但是这只将字段设置为空数组(不完全按照希望删除字段)。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你确定吗?对我来说很好:

> db.foos.insert({ arr: ["string"] })
WriteResult({ "nInserted" : 1 })
> db.foos.insert({ arr: ["string"] })
WriteResult({ "nInserted" : 1 })
> db.foos.update({}, { $unset: { arr: "" } }, { multi: true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.foos
test.foos
> db.foos.find()
{ "_id" : ObjectId("55c19683d66df2af820a8c74") }
{ "_id" : ObjectId("55c19685d66df2af820a8c75") }

答案 1 :(得分:0)

阿。发现我的问题是Mongoose造成的 - 而不是MongoDB。 shell在shell中是正确的,但是当通过Express路由器查看时,Mongoose Schema正在控制。只需要纠正我的Mongoose架构并推送代码。