【问题标题】:Get distinct values from each field within mongodb collection从 mongodb 集合中的每个字段获取不同的值
【发布时间】:2020-08-26 18:08:11
【问题描述】:

如何使用单个查询获取 mongodb 集合中所有字段的不同值。

{ "_id": "1", "Gender": "male", "car": "bmw" , "house":"2bhk" , "married_to": "kalpu"},
{ "_id": "2", "Gender": "female", "car": nan , "house":"3bhk", "married_to": "kalpu"},
{ "_id": "3", "Gender": "female", "car": "audi", "house":"1bhk", "married_to": "deepa"},

这是一个字段很少的示例,在我的实际集合中,每个文档至少有 50 个字段。那么如何有效地查询将在每个字段中返回唯一值呢?提前感谢您的帮助。

预期答案:

对于每个字段,

  Gender:"male", "female"
  car   :"bmw", "audi",.....
  house : "3hbk","2bhk","1bhk"
  married_to: "kalpu","deepa",....
  ....
  ....
  ...
  

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework pymongo


    【解决方案1】:

    您可以将聚合管道$group stage$addToSet operator 一起使用

    db.collection.aggregate([
      {
        $group: {
          _id: null,
          Gender: {
            "$addToSet": "$Gender"
          },
          car: {
            "$addToSet": "$car"
          },
          house: {
            "$addToSet": "$house"
          },
          married_to: {
            "$addToSet": "$married_to"
          },
          
        }
      }
    ]) 
    

    Working Example

    【讨论】:

    • 嘿,这回答了你的问题吗?
    • 谢谢,是的,它有效,但是如何避免“空”值被视为不同的值。
    • 空值被认为是相同的
    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2023-03-31
    • 2020-04-30
    • 2014-07-20
    • 2018-08-07
    相关资源
    最近更新 更多