【问题标题】:need get all key from object in mongodb需要从 mongodb 中的对象获取所有密钥
【发布时间】:2021-09-25 00:09:42
【问题描述】:

我有以下格式的数据

[
  { _id: ObjectId, spec: { abc: 'abc', bcd: 'bcd', cde: 'cde' } },
  { _id: ObjectId, spec: { bcd: 'bcd', cde: 'cde', efg: 'efg' } },
  { _id: ObjectId, spec: { cde: 'cde', efg: 'efg', ghi: 'ghi' } },
  { _id: ObjectId, spec: { ghi: 'ghi', abc: 'abc', bcd: 'bcd' } }
];

我需要使用这样的聚合从所有对象中获取来自 spec 对象的所有键。

['abc','bcd','cde','efg','ghi']

【问题讨论】:

    标签: mongodb mongoose aggregation-framework nosql-aggregation


    【解决方案1】:
    • $objectToArrayspec 对象转换为键值格式的数组
    • $unwind解构spec数组
    • $group 通过 null 并使用 $addToSet 构造 spec 对象键的唯一数组
    db.collection.aggregate([
      { $project: { spec: { $objectToArray: "$spec" } } },
      { $unwind: "$spec" },
      {
        $group: {
          _id: null,
          spec: { $addToSet: "$spec.k" }
        }
      }
    ])
    

    Playground

    【讨论】:

      猜你喜欢
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2020-11-20
      相关资源
      最近更新 更多