需要从 mongodb 中的对象获取所有密钥
need get all key from object in mongodb
我有以下格式的数据
[
{ _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']
$objectToArray
将 spec
对象转换为键值格式的数组
$unwind
解构spec
数组
$group
为 null 并使用 $addToSet
构造 spec
对象键的唯一数组
db.collection.aggregate([
{ $project: { spec: { $objectToArray: "$spec" } } },
{ $unwind: "$spec" },
{
$group: {
_id: null,
spec: { $addToSet: "$spec.k" }
}
}
])
我有以下格式的数据
[
{ _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']
$objectToArray
将spec
对象转换为键值格式的数组$unwind
解构spec
数组$group
为 null 并使用$addToSet
构造
spec
对象键的唯一数组
db.collection.aggregate([
{ $project: { spec: { $objectToArray: "$spec" } } },
{ $unwind: "$spec" },
{
$group: {
_id: null,
spec: { $addToSet: "$spec.k" }
}
}
])