我在Mongo集合中手动创建了一个对象:
{
"messages": [
{
"url":"http://test.test.com",
"message":"test message"
}
],
....other properties
}
我想在我的消息数组的每个项目和集合中的每个文档中添加_id:ObjectId()
。
我试过了:
collection.update({}, {
$set: {
'messages.$._id': ObjectId(),
},
}, { multi: true }
但这不起作用。当我添加通过Mongoose的新增加时,ID会被添加,但这些是手动输入到mongo中的。任何帮助表示赞赏。
答案 0 :(得分:0)
您的语法是正确的,但为了使用$ positional运算符,数组字段必须作为查询文档的一部分出现,check in documentation.
试试这个:
db.collection.update({messages: {$exists: true }},
{$set: { 'messages.$._id': ObjectId() } },
{multi: true}
)