我需要给数组中的许多对象添加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?
1条答案
按热度按时间goqiplq21#
这是因为
mongoose.Types.ObjectId()
是一个客户端函数,它在构建查询时执行,只有函数调用返回的值才包含在提交给服务器的请求中。