我收集了一些这样的文件:
{
"_id": "5f7db1c8e3ec502bf2f2c97c",
"subject": "AA0001",
"metrics": {
"m001": 40.8,
"m0022": 58.8,
.....
"m0101: -5.0,
}
}
“metrics”中的所有字段都是数字。负值是错误的。我想用“NA”替换任何负值。但我有两个问题:
- 每个文档的负值字段都不同。
- “metrics”中的字段并不总是相同的。一个文档可以比其他文档具有更多的“度量”。
有什么想法吗
2条答案
按热度按时间muk1a3rh1#
你可以用
$objectToArray
把metrics对象转换成一个键值对对象数组,然后用$map
把它转换成一个数组,如果数字是负数,它将被替换为“NA”,使用一个条件操作。完成转换后,可以使用$arrayToObject
将数组转换回对象playground
您也可以更新集合以反映这些更改。从Mongo 4.2开始,您可以在
update
调用中编写聚合管道$addFields
和$set
可以互换使用playground
agxfikkp2#
你可以使用下面的代码。