如何清除嵌套数组中的特定项

时间:2015-06-04 02:14:19

标签: mongodb

我想删除只包含空格的项目。

例如:" "" "

我想从buy_items数组中删除它们。

怎么做?感谢

示例文档

{
  "_id": "mark jordan",
  "records": [
    {
      "date": new Date("2012-05-04T08:00:00+0800"),
      "buy_items": [
        "6829           ",
        "               ",
        "68600          ",
        "8830           "
      ]
    },
    {
      "date": new Date("2011-02-10T08:00:00+0800"),
      "buy_items": [
        "4659 ",
        "     ",
        "4660 "
      ]
    },
    {
      "date": new Date("2011-01-09T08:00:00+0800"),
      "buy_items": [
        "     ",
        "4659 "
      ]
    }
  ]
}

2 个答案:

答案 0 :(得分:0)

您基本上与此问题中描述的情况相同:How to check if a line is blank using regex

只需将其应用于通过monogodb中的数组进行搜索:

http://docs.mongodb.org/manual/reference/operator/query/regex/

答案 1 :(得分:0)

我相信你最好的方法是迭代遍历数组的每个元素。如果在内部数组中检测到非空白字符,则转到外部数组的下一个元素;如果扫描内部数组的所有元素并且没有出现非空白字符,则将删除此元素。

删除数组元素可以通过将数组中的每个后续元素向上移动一个空格,然后将数组大小减小1(如果数组大小是您明确跟踪的内容)来完成。

这是一个相当处理器/时间密集的过程,因此应该避免不必要的执行此过程。您还可以通过在移动它们之前扫描每个元素以查找非空白字符来修剪处理时间,并在必要时在一个通道中删除所有仅空格元素。