【问题标题】:Mongodb aggregate with cond and query valueMongodb 聚合条件和查询值
【发布时间】:2020-06-30 18:40:29
【问题描述】:

我是 mongodb 的新手。我需要知道如何查询项目以设置为聚合值

数据

[
  {
    "_id" : "11111",
    "parent_id" : "99",
    "name" : "AAAA"
  },
  {
    "_id" : "11112",
    "parent_id" : "99",
    "name" : "BBBB"
  },
  {
    "_id" : "11113",
    "parent_id" : "100",
    "name" : "CCCC"
  },
  {
    "_id" : "11114",
    "parent_id" : "99",
    "name" : "DDDD"
  }
]

蒙哥壳

假设 $check 为假

db.getCollection('test').aggregate(
  [
    {
      "$group": {
        "_id": "$id",
        //...,
        "item": {
          "$last": {
            "$cond": [
              {"$eq": ["$check", true]},
              "YES",
              * * ANSWER **,
              }
            ]
          }
        },
      }
  ]
)

所以我需要项目的结果是所有名称都包含与数组字符串相同的 parent_id

期待结果

[
  {
    "_id" : "11111",
    "parent_id" : "99",
    "name" : "AAAA",
    "item" : ["AAAA","BBBB","DDDD"]
  },

  {
    "_id" : "11112",
    "parent_id" : "99",
    "name" : "BBBB",
    "item" : ["AAAA","BBBB","DDDD"]
  },

  {
    "_id" : "11113",
    "parent_id" : "100",
    "name" : "CCCC",
    "item" : ["CCCC"]
  },

  {
    "_id" : "11114",
    "parent_id" : "99",
    "name" : "DDDD",
    "item" : ["AAAA","BBBB","DDDD"]
  }
]

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    试试这个..

    Sample live demo

    db.collection.aggregate([
      {
        "$group": {
          "_id": "$parent_id",
          "item": {
            "$push": "$name"
          },
          "data": {
            "$push": {
              "_id": "$_id",
              "name": "$name"
            }
          }
        }
      },
      {
        "$unwind": "$data"
      },
      {
        "$project": {
          "_id": "$data._id",
          "parent_id": "$_id",
          "name": "$data.name",
          "item": 1
        }
      }
    ])
    

    【讨论】:

    • 感谢它的工作! , 但是我可以问你更多信息吗,1.你的代码如何与 $cond (condition) 结合?
    • 首先我根据父 ID 对项目进行分组,还将名称和 ID 存储在数据中,然后展开数据。我建议您通过修改每个阶段来使用我分享的示例演示。
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2017-02-22
    • 2023-03-16
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多