首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过阵列为我提供相同Id的MongoDB新ObjectId

通过阵列为我提供相同Id的MongoDB新ObjectId
EN

Stack Overflow用户
提问于 2019-01-15 09:04:55
回答 1查看 191关注 0票数 0

我正在尝试用唯一的ObjectIds更新数组中的项(意思是向缺少它们的数组对象添加一个对象ID )

如果我的集合中有一组衬衫对象,我尝试这样做:

代码语言:javascript
复制
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更新多个记录或多个数组对象?

EN

回答 1

Stack Overflow用户

发布于 2019-01-15 09:49:04

当您使用$set时,您是在告诉mongo将该值设置为所有匹配的元素。如果数组中的元素已经定义为模式,mongo将自动为每个元素发出新的ObjectIds。

或者,您可以使用forEach遍历每个匹配的元素来创建一个新的ObjectId。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54191385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档