作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从一系列集合中获取数组中键的值。请找到代码片段和预期输出。我会如果您能帮助我了解应该进入聚合阶段以获得所需输出的内容,将不胜感激。请注意,将有超过 5000 个集合
db.collection1.insertMany([{
item: "journal",
qty: 25,
tags: blank
},
{
item: "mat",
qty: 85,
tags: gray
},
{
item: "mousepad",
qty: 25,
tags: gel
}
])
db.collection2.insertMany([{
abc: "paplu",
qiity: 01,
thugs: red
},
{
abc: "mat",
qiity: 85,
thugs: gray
},
{
abc: "mousepad",
qiity: 25,
thugs: gel
}
])
var a = ["collection1", "collection2"];
for (var i = 0; i < a.length; i++) {
db[a[i]].aggregate([])};
Expected Output:
collection1
{
item : ["journal","mat","mousepad"],
qty : [25,85,25],
tags : [blank,gray,gel]
}
collection2
{
abc : ["paplu","mat","mousepad"],
qiity : [01,85,25],
thugs : [red,gray, gel]
}
Please note, I'm trying to achieve this using MongoDB/JavaScript
It would be great if someone can help me with this!
最佳答案
您可以从 $objectToArray 开始将 ROOT
对象中的键放入数组中。然后你可以运行 $unwind和 $group通过 null
和 $addToSet从整个集合中获取包含唯一键名的单个文档。在最后一步中,您需要使用 $map 将数组转换回单个文档, $arrayToObject和 $replaceRoot :
db.collection.aggregate([
{
$project: { kv: { $objectToArray: "$$ROOT" } }
},
{ $unwind: "$kv" },
{
$group: {
_id: null,
keys: { $addToSet: "$kv.k" }
}
},
{
$replaceRoot: {
newRoot: {
$arrayToObject: {
$map: { input: "$keys", in: [ "$$this", 1 ] }
}
}
}
}
])
关于javascript - 如何从 Javascript 中的集合数组中提取键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57549753/
我是一名优秀的程序员,十分优秀!