Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:项目元素存在于对象中的数组中_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

MongoDB:项目元素存在于对象中的数组中

MongoDB:项目元素存在于对象中的数组中,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我在mongo有一个收藏,我只需要其中的一部分 文档的结构如下所示: { outerArray: [ { innerArray: [ { elem: val1 }, { elem: val2 } ] }, { innerArray: [ { elem: val3 },

我在mongo有一个收藏,我只需要其中的一部分

文档的结构如下所示:

{
  outerArray: [
    {
      innerArray: [
        {
          elem: val1
        },
        {
          elem: val2
        }
      ]
    },
    {
      innerArray: [
        {
          elem: val3
        },
        {
          elem: val1
        }
      ]
    }
  ]
}
我只需要此集合中的
elem
的值。此外,获得唯一值也是一个优点,但不是必需的

所需输出:

{
  elem: [
    val1,
    val2,
    val3
  ]
}
我尝试过投射和聚合,但没有成功。 我正在使用Mongo 3.4.6。

您需要的

看看,然后。我用它来构建这个聚合管道

db.i.aggregate([{ $unwind: "$outerArray" }, { $unwind: "$outerArray.innerArray" }, { $group: { _id: "$_id", "elem":  { $addToSet: "$outerArray.innerArray.elem" } } } ])
你需要

看看,然后。我用它来构建这个聚合管道

db.i.aggregate([{ $unwind: "$outerArray" }, { $unwind: "$outerArray.innerArray" }, { $group: { _id: "$_id", "elem":  { $addToSet: "$outerArray.innerArray.elem" } } } ])
使用MongoDB的:

测试:

使用MongoDB:


测试:

内部数组的键是常量还是动态的
innerray
的键是常量内部数组的键是常量
innerray
的键是常量还是动态的
innerray
的键是常量