我想获取MongoDB集合中所有键的名称.
例如,从这个:
db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type : [] } );
db.things.insert( { hello : [] } );
Run Code Online (Sandbox Code Playgroud)
我想得到独特的钥匙:
type, egg, hello
Run Code Online (Sandbox Code Playgroud) 我有一大堆这样的文件:
{
_id: '1',
colors: [
{ value: 'red', count: 2 },
{ value: 'blue', count: 3}
]
shapes: [
{ value: 'cube', type: '3d' },
{ value: 'square', type: '2d'}
]
},
{
_id: '2',
colors: [
{ value: 'red', count: 7 },
{ value: 'blue', count: 34},
{ value: 'yellow', count: 12}
]
shapes: [
{ value: 'prism', type: '3d' },
{ value: 'triangle', type: '2d'}
]
}
Run Code Online (Sandbox Code Playgroud)
通过使用$unwind和$addToSet,如下所示:
db.getCollection('coll').aggregate([{$unwind:"$colors"},{$unwind:"$shapes"},{$group:{_id:null,colors:{$addToSet:"$colors"},shapes:{$addToSet:"$shapes"}])
Run Code Online (Sandbox Code Playgroud)
我可以得到以下信息:
{
"_id" : …Run Code Online (Sandbox Code Playgroud) 我有一个这样的收藏
[{
"_id" : ObjectId("590c2331dc1a05e7d3525e70"),
"name" : "Orange",
"quarters" : {
"first" : 20,
"middle" : 53,
"last" : 52
}
}, {
"_id" : ObjectId("590c2405dc1a05e7d3525e71"),
"name" : "Apple",
"quarters" : {
"first" : 42,
"middle" : 37,
"last" : 16
}
}]
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果
[{
name: "Orange",
first: 20
},{
name: "Orange",
middle: 53
},{
name: "Orange",
last: 52
},{
name: "Apple",
first: 42
},{
name: "Apple",
middle: 37
},{
name: "Apple",
last: 16
}]
Run Code Online (Sandbox Code Playgroud)
我试图找到解决方案,但发现很少有与此问题类似的问题,但没有运气
提前致谢
我正在使用javascript,我已经嵌套了jong对象来自mongodb.
"abc": [
{
"a": "01AABCE2207R1Z5",
"b": "Y",
"c": [
{
"ca": "A",
"cb": "AflJufPlFStqKBZ",
"cc": "S008400"
},
{
"cx": "A",
"cy": "AflJufPlFStqKBZ",
"cz": "S008400"
}
]
},
{
"a": "01AABCE2207R1Z5",
"b": "Y",
"c": [
{
"ca": "A",
"cb": "AflJufPlFStqKBZ",
"cc": "S008400"
},
{
"cx": "A",
"cy": "AflJufPlFStqKBZ",
"cz": "S008400"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
上面的模式有固定的字段,架构中不会有任何变化.
现在我想把它作为平面json数组对象,结果应该是这样的.如果c有多个JSON对象的,应该创建一个新的JSON对象以相同的a,b值
[{
"a": "01AABCE2207R1Z5",
"b": "Y",
"ca": "A",
"cb": "AflJufPlFStqKBZ",
"cc": "S008400"
},
{
"a": "01AABCE2207R1Z5",
"b": "Y",
"cx": …Run Code Online (Sandbox Code Playgroud)