我正在尝试用唯一的ObjectIds更新数组中的项(意思是向缺少它们的数组对象添加一个对象ID )
如果我的集合中有一组衬衫对象,我尝试这样做:
db.people.update({
$and : [
_id: ObjectId('5eeb44c6a042791d28a8641f'),
{
$or: [
{ 'shirts._id': { $eq:null } },
{ 'shirts._id':{ $exists:false } }
]
}
]
},{
$set: { 'shirts.$[]._id': new ObjectId() }
},{
"multi" : true
});
它为每个数组元素生成相同的ObjectsID,我会在上面放一个唯一的索引,但是,在边缘情况达到5-6的情况下,用例可能不会在数组中看到超过2-3个项目,这似乎是对索引的滥用
如何使用唯一的ObjectId更新多个记录或多个数组对象?
发布于 2019-01-15 09:49:04
当您使用$set时,您是在告诉mongo将该值设置为所有匹配的元素。如果数组中的元素已经定义为模式,mongo将自动为每个元素发出新的ObjectIds。
或者,您可以使用forEach遍历每个匹配的元素来创建一个新的ObjectId。
https://stackoverflow.com/questions/54191385
复制相似问题