条件数组更新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方法更改为删除多个与条件匹配的项(如果数组包含在另一个元素中)?还有这个方法吗?因为它似乎不起作用…我不确定我是否理解你的意思,这个解决方案对提供的示例有效。您可能需要修改问题。我试图在编辑中解释:)