mongodb聚合,过滤内部对象数组

时间:2018-05-22 12:25:55

标签: mongodb filter aggregate

我有mongo v 3.2 我需要过滤内部对象数组。但过滤器不起作用。

我有对象

{
   _id: "112233",
   mainOptions: {
     option0: "op0",
     option1: "op1",
     option2: "op2"
   },
   instructions: [
     0: {
      number: 0,
      header: {
        desc: "d0",
        inst: "i0"
      }
      items: [
       0: {
         info: {
           text: "one info"
         }
       }
       1: {
         info: {
           text: "two info"
         }
       }
      ]
     }
     1: {
      number: 1,
      header: {
        desc: "d1",
        inst: "i1"
      }
      items: [
       0: {
         info: {
           text: "one info"
         }
       }
       1: {
         info: {
           text: "two info"
         }
       }
      ]
     }
   ]
}

我如何返回具有所有结构的对象,但是" items"我需要留下只有info.text ="两个信息"

的项目

我尝试使用:

db.onlineBallots.aggregate(
    [
        { 
            "$match" : {
                "_id": "112233", 
                "mainOptions.option0" : "op0"
            }
        }, 
        { 
            "$project" : {
                "mainOptions" : 1, 
                "instructions.items" : {
                    "$filter" : {
                        "input" : "$instructions.items", 
                        "as" : "item", 
                        "cond" : { "$regex": "two", "$options": "i" } 
                        }
                    }
                }
            }
        }
    ]
);

但过滤器不起作用。我收到" items"中的所有项目。 请帮我解决这个问题。

0 个答案:

没有答案