条件数组更新MongoDB
我有一个这样的收藏:条件数组更新MongoDB,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个这样的收藏: { "citizen":[ { "country":"ITA", "language":"Italian" }, { "country":"UK", "language":"English" }, { "country"
{
"citizen":[
{
"country":"ITA",
"language":"Italian"
},
{
"country":"UK",
"language":"English"
},
{
"country":"CANADA",
"language":"French"
}]
}
{
"cittadino":{
"citizen":[
{
"country":"ITA",
"language":"Italian"
},
{
"country":"UK",
"language":"English"
},
{
"country":"CANADA",
"language":"French"
}]
}
}
我正在尝试更新集合,但有特定条件。如果字段country中的值超过3个字符,我需要更新并删除数组citizen的一个元素
我得到了这样的结果:要删除一个元素,我必须使用$pull,要检查字符串的大小,我必须使用$strLenCP,并且$gt大于,但我正在努力将它们放在一起
更新的结果应为:
{
"citizen":[
{
"country":"ITA",
"language":"Italian"
},
{
"country":"UK",
"language":"English"
}]
}
有什么建议吗
编辑:
对于集合,实际上,命令:
db.getCollection('COLLECTION').update( { }, { $pull: {"citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })
工作完美。
我在另一个系列上试过,比如:
{
"citizen":[
{
"country":"ITA",
"language":"Italian"
},
{
"country":"UK",
"language":"English"
},
{
"country":"CANADA",
"language":"French"
}]
}
{
"cittadino":{
"citizen":[
{
"country":"ITA",
"language":"Italian"
},
{
"country":"UK",
"language":"English"
},
{
"country":"CANADA",
"language":"French"
}]
}
}
它不再更新了。我该怎么办?您走的是正确的道路:
db.getCollection('COLLECTION').update( { }, { $pull: {"citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })
运算符获取值或条件。您需要使用它根据“country”属性筛选数组
编辑:
使用访问嵌套文档
db.getCollection('COLLECTION').update( { }, { $pull: {"cittadino.citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })
在您的代码中,它只匹配字符串,正好是4,对吗?您是对的,我已将正则表达式更改为包含4+,并将update方法更改为删除多个与条件匹配的项(如果数组包含在另一个元素中)?还有这个方法吗?因为它似乎不起作用…我不确定我是否理解你的意思,这个解决方案对提供的示例有效。您可能需要修改问题。我试图在编辑中解释:)