相关疑难解决方法(0)

获取集合中所有键的名称

我想获取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)

mongodb mongodb-query aggregation-framework

301
推荐指数
11
解决办法
18万
查看次数

Mongo Aggregate:重复数组值字段的和计数字段

我有一大堆这样的文件:

{
  _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)

mongodb aggregation-framework

3
推荐指数
1
解决办法
3597
查看次数

在 mongodb 中展开对象

我有一个这样的收藏

[{
    "_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)

我试图找到解决方案,但发现很少有与此问题类似的问题,但没有运气

提前致谢

mongodb aggregation-framework

1
推荐指数
1
解决办法
3018
查看次数

将嵌套JSON转换为Flat JSON

我正在使用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)

javascript json nested flatten

0
推荐指数
1
解决办法
6170
查看次数