mongodb Mongoose在updateMany中设置对象ID

lrpiutwd  于 2023-04-20  发布在  Go
关注(0)|答案(1)|浏览(147)

我需要给数组中的许多对象添加ID。假设我的模式看起来像这样:

{
   _id: something,
   property:value,
   animals: [
     {
       dogs: [
         { name: 'Dog1' },
         { name: 'Dog2' }
       ],
       cats: [
         { name: 'Cat1' },
         { name: 'Cat2' }
       ]
     }
   ]
}

我想实现这样的目标:

{
   _id: something,
   property:value,
   animals: [
     {
       dogs: [
         { name: 'Dog1', _id: uniqueID },
         { name: 'Dog2', _id: uniqueID }
       ],
       cats: [
         { name: 'Cat1', _id: uniqueID },
         { name: 'Cat2', _id: uniqueID }
       ]
     }
   ]
}

我的准则

db.collection('collectionName').updateMany(
  { animals: { $ne: [] } },
       {
          $set: {
            'animals.$[].cats.$[]._id': mongoose.Types.ObjectId(),
            'animals.$[].dogs.$[]._id': mongoose.Types.ObjectId()
          }
       }
 );

它可以工作,但ID是完全相同的。如何实现唯一的ID?

goqiplq2

goqiplq21#

这是因为mongoose.Types.ObjectId()是一个客户端函数,它在构建查询时执行,只有函数调用返回的值才包含在提交给服务器的请求中。

相关问题