当前位置:  开发笔记 > 数据库 > 正文

MongoDB:从两个不同的表中检索不同的计数

如何解决《MongoDB:从两个不同的表中检索不同的计数》经验,为你挑选了1个好方法。

我继承了一个包含MongoDB服务器中大量数据的项目.我正在为它写一些查询,并遇到了一个相当烦人的问题.我需要找到我们称之为的唯一值的数量ID.问题是,根据这些数据的来源,它们可能出现在两个不同的点上.

例如,表格看起来像这样:

{ 
  foo: {
     ID: "ABC123"
  },
  bar: {
     ID: undefined
  }
}

要么

{ 
  foo: {
     ID: undefined
  },
  bar: {
     ID: "ABC123"
  }
}

要么

{ 
  foo: {
     ID: "ABC123"
  },
  bar: {
     ID: "ABC123"
  }
}

不幸的是,我现在无法重新建模数据.我对MongoDB的了解相当有限.我想知道是否有一种方法可以使用聚合将这些连接在一起,因此我将所有ID集合到一个Document中,因此它们都是唯一的.将一个或另一个组合起来相当微不足道,但将两者分组都会给我重复.



1> ares..:

您可以使用$project,然后$group,然后$addToSet.

db.c.aggregate([
{
    $project : {
        _id : 0,
        IDS : ["$foo.ID", "$bar.ID"]
    }
},
{
    $unwind : "$IDS"
},
{
    $group : {
        _id : 1,
        distinctIds : {
            $addToSet : "$IDS"
        }
    }
}
])

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有