在特定文档的子列表中获取现有项目

时间:2018-10-11 20:12:17

标签: mongodb aggregation-framework

我是mongodb的新手,但我一直坚持正确的投影...

这是我的文档:

{  
   "field1":"value1",
   "field2":[  
      "item1",
      "item2",
      "item3",
      "item4"
   ]
}

这是一些通缉名单:

["item1", "item3","item5"];

,我想从上面的“需要的列表”中获得字段2中的现有项目。 在我的示例中,结果值应为[“ item1”,“ item2”]

那是什么计划? 这不起作用:

db.users.find({"field1": "value1"}, {"field1" : 1,"field2": {$in: ["item1", "item3","item5"]}}).pretty()

非常感谢!

已解决: 多亏了安东尼·温兹莱特(Anthony Winzlet),所缺少的是它必须匹配字段1,例如:

db.collection.aggregate([
  {
    $match: {"field1": "value1"}
  },
  { "$project": {
    "field2": {
      "$filter": {
        "input": "$field2",
        "cond": {
          "$in": [
            "$$this",
            ["item1", "item3", "item5"]
          ]
        }
      }
    }
  }}
])

1 个答案:

答案 0 :(得分:1)

您可以尝试以下汇总

i18next.on('languageChanged', function(lng) {
    window.location.href = `${location.origin}/${lng}${location.pathname}`;
});)