需要从 mongodb 中的对象获取所有密钥

Posted

技术标签:

【中文标题】需要从 mongodb 中的对象获取所有密钥【英文标题】:need get all key from object in 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']

【问题讨论】:

【参考方案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

【讨论】:

以上是关于需要从 mongodb 中的对象获取所有密钥的主要内容,如果未能解决你的问题,请参考以下文章

从json字符串中的键字符串替换或删除Dote(。)以插入mongodb

如何在 mongodb 和 mongoose 模型中使用 cloudinary

从 MongoDB 集合中的特定文档开始获取“n”个文档

如何连接该mongodb集合中的所有成员ID?

如何使用 SwiftyJSON 从 JSON 对象中获取 JSON 密钥?

sh 如何从mongodb中的集合中获取所有文档?