鍍金池/ 問答/數(shù)據(jù)庫/ mongodb怎樣對二維數(shù)組的子數(shù)組進行filter?

mongodb怎樣對二維數(shù)組的子數(shù)組進行filter?

如下數(shù)據(jù)結(jié)構(gòu):
加入我有一個fruit的Document,里面是:

{
  name: 'apple',
  menu: [
    {
      title: '和梨一起'
    },
    {
      title: '和草莓一起'
    }
  ]
},
{
  name: 'orange',
  menu: [
    {
      title: '和梨一起'
    },
    {
      title: '和草莓一起'
    }
  ]
}

我希望搜索 的時候,得到

{
  name: 'apple',
  menu: [
    {
      title: '和梨一起'
    }
  ]
},
{
  name: 'orange',
  menu: [
    {
      title: '和梨一起'
    }
  ]
}

也就是對二維數(shù)組的子數(shù)組進行數(shù)據(jù)清洗 怎么做?

回答
編輯回答
尐飯團

如果title不重復(fù),很簡單地做一下映射就可以了

db.test.find({"menu.title": '和梨一起'}, {name: 1, "menu.$": 1})

但是$只會給你第一個匹配的數(shù)組元素,所以如果title有重復(fù),則需要通過aggregation的filter運算符來處理。具體用法參考文檔中的例子。

2018年4月8日 12:49