MongoDB在数组

时间:2018-02-08 06:54:29

标签: mongodb mongoose

您好我想找到数组的元素。 我想如果你看到数据库和预期的数据,你就可以理解我的问题了。

这是我的数据库。

这是一个例子。

{
    member_id : "aeraew",
    name....
    ..
    items : [
        {
          title : "a",
          category : "1",
          method : "1",
          money : "1",
          memo : "memo",
          date : "2017-01-02"
        },
        {
          title : "b",
          category : "1",
          method : "1",
          money : "1",
          memo : "memo",
          date : "2017-01-02"
        },
        {
          title : "c",
          category : "1",
          method : "1",
          money : "1",
          memo : "memo",
          date : "2017-01-03"
        }  

    ]

}

我的期望是:

    {
      title : "a",
      category : "1",
      method : "1",
      money : "1",
      memo : "memo",
      date : "2017-01-02"
    },
    {
      title : "b",
      category : "1",
      method : "1",
      money : "1",
      memo : "memo",
      date : "2017-01-02"
    },
    _id : "ididid"
}

$ elemMatch只查找第一个元素,$ in" items.date" :" 2017-01-01"等......不起作用。

我能做什么?

1 个答案:

答案 0 :(得分:0)

db.collection.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $unwind: {
                path: '$items'
            }
        },

        // Stage 2
        {
            $match: {
                'items.date': "2017-01-02"
            }
        },

        // Stage 3
        {
            $group: {
                _id: '$_id',
                items: {
                    $addToSet: '$items'
                }
            }
        },

    ]



);