创建Mongo Collection时,我错误地将其中一个字段设置为字符串数组。我现在需要返回并将所有这些数组更改为简单的字符串。我曾尝试使用以下内容首先删除包含字符串数组的字段:
db.messages.update(
{},
{
'$unset': {"userResponse":1}
},
{'multi': true}
)
但是这只将字段设置为空数组(不完全按照希望删除字段)。有什么建议吗?
答案 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架构并推送代码。