【问题标题】:find the mongo db unique documents查找 mongo db 唯一文档
【发布时间】:2014-04-12 13:11:21
【问题描述】:

我在 mongodb 中有一个名为 location 的集合。它有字段 地点:

 (_id,country,region,city,doctype,name)

可能有多个同名的文档(记录)。我想查找所有文档并选择字段

_id,doctype,and name

具有唯一名称。我是 mongo db 的新手,请帮助我。

【问题讨论】:

    标签: javascript mongodb aggregation-framework


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      做一个 map reduce 来计算多个名称:

      db.collection.mapReduce(
          function(){emit(this.name);},
          function(key,values){
              sum=0;
              for(var i=0;i<values.length;i++){
                 sum+=values[i];
              }
              return sum;
          },
          {out:"count_per_name"}
      );
      

      这将创建一个名为“count_per_name”的集合。查询以查找计数大于 1 的名称。

      【讨论】:

      • 这实际上并没有回答问题。此外,mapReduce 方法的运行速度比聚合框架对应的方法慢得多。你应该使用那些。看我的回答。
      • 不是重点。学习聚合框架。它以本机代码运行,不使用 JavaScript 解释器来获取结果。运行此代码比本机实现慢得多。我正在对您发表评论,以便您真正了解并理解这个概念。
      【解决方案3】:

      您想将.aggregate 函数与$group 运算符一起使用:

      db.collection.aggregate([
          { "$group": {
              "_id": {
                  "_id": "$_id",
                  "doctype": " $doctype",
                  "name": "$name"
              }
          }}
      ])
      

      这相当于 SQL“GROUP”运算符。有关更多示例,请参阅 MongoDB 手册中的 SQL TO Aggregation mapping

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-24
        • 2014-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多