我有一个Mongo州集合,其中每个州包含一系列城市:
{
"_id":"636d1137cf1e57408486f795",
"state":"new york",
"cities":[
{
"cityid":"62bd8fa5396ba8aef4ad1041",
"name":"Yonkers"
},
{
"cityid":"62bd8fa5396ba8aef4ad1043",
"name":"Syracuse"
}
]
}
我需要一个更新查询,将集合中的每一个cities.name
小写。我可以用一个文字值进行更新,例如。
db.states.updateMany(
{},
{ $set: { "cities.$[].name" : "some_value" } }
)
......,但是我需要这个值基于现有的值,我能得到的最接近的值是这样的(但是这不起作用--FieldPath field names may not start with '$'
)
db.states.updateMany(
{},
{ $set: { "cities.$[].name" : { $toLower: "cities.$[].name"} } }
)
1条答案
按热度按时间lf5gs5x21#
您可以将
$map
和$mergeObjects
链接起来执行更新。在更新时将其放在聚合管道中。Mongo Playground