需要从 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】:$objectToArray
将 spec
对象转换为键值格式的数组
$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