假设我想将所有嵌套值乘以10。
{
foos: [
{ val: 1 },
{ val: 10 },
{ val: 5 },
]
}
// to
{
foos: [
{ val: 10 },
{ val: 100 },
{ val: 50 },
]
}
由于我们重用了现有的字段值,所以我假设必须使用聚合操作符。
以下是一些尝试:
x一个一个一个一个x一个一个二个x
不提取文档并继续使用JS循环进行更新是否可行?
比如:
coll.updateMany({}, [
{
$set: {
foos: {
$map: {
input: '$foos',
as: 'foo',
in: {
$project: {
blackMagicToSpreadtheOriginalFoo: '$$foo', // FIXME
val: { $multiply: ['$$foo.val', 10] }
}
}
}
}
}
}
])
1条答案
按热度按时间cigdeys31#
在这种情况下,您为什么需要:
blackMagicToSpreadtheOriginalFoo: '$$foo', // FIXME
?为什么不简单地:了解它在playground example上的工作原理
如果 eclipse 刻项中有其他键,则使用
$mergeObjects
:了解它在playground example - with keys上的工作原理