有没有办法获取mongodb中对象字段的长度?

cyt*_*nny 4 mapreduce mongodb mongodb-query aggregation-framework

我有以下对象MongoDB

[
    {
        "name": "pencil",
        "purchase_record": {
            "1":"$900",
            "2":"$1000",
            "3":"$1100",
            "4":"$1200"
        }
    },
    {
        "name": "pen",
        "purchase_record": {
            "1":"$1000",
            "2":"$1200",
            "3":"$900",
            "4":"$1100",
            "5":"$1100"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

purchase_record有没有办法获得每条记录的长度?

bur*_*ete 5

这是一个老问题,但答案很简单$objectToArray,可以从 MongoDB 版本 3.4.4 获得

你可以这样做;

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      name: 1,
      purchaseCount: {
        $size: {
          "$objectToArray": "$purchase_record"
        }
      }
    }
  }
])
Run Code Online (Sandbox Code Playgroud)

这将给出 中的字段数purchase_record,结果将是;

[
  {
    "name": "pencil",
    "purchaseCount": 4
  },
  {
    "name": "pen",
    "purchaseCount": 5
  }
]
Run Code Online (Sandbox Code Playgroud)

在mongoplayground上以交互方式查看