【问题标题】:Retrieve the field from the array从数组中检索字段
【发布时间】:2021-09-22 11:02:02
【问题描述】:

我有这样的文件

[
  {
    "empno": "×325007",
    "vehicle": [
      {
        "valdate": "2020-08-02T13:17z",
        "Inspectvalue": {
          "price": "2000"
        }
      }
    ]
  }
]

但我想要这样的文件

{
"empno":"x325007",
"valdate":"2020-08-02T13:17z",
"price":"2000"
}

【问题讨论】:

标签: mongodb


【解决方案1】:
  • 将它们保存在数组中,并包括每个元素的键。

Example

db.collection.aggregate([
  {
    $addFields: {
      newData: {
        "$map": {
          "input": "$vehicle",
          "as": "v",
          "in": {
            valdate: "$$v.valdate",
            price: "$$v.Inspectvalue.price",
            empno: "$empno"
          }
        }
      }
    }
  },
  {
    $unset: [
      "vehicle",
      "empno"
    ],
    
  }
])

(在 JSON 中不能有重复的顶级字段)。

或者,如果您希望它们作为顶级键,展开元素:

db.collection.aggregate([
  {
    $unwind: "$vehicle"
  },
  {
    $addFields: {
      valdate: "vehicle.valdate",
      price: "vehicle.Inspectvalue.price"
    }
  },
  {
    $unset: "vehicle"
  }
])

Example

【讨论】:

  • 我有这样的查询 db.collection.find({empno:{$in:["x325007","x325008","x325009"]}},{"empno":1," vehicle.valdate":1,"vehicle.Inspectvalue.price:1}) 但我想要上面这样的文件
  • 添加$match,然后添加$project 舞台@Avudainayagam
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
相关资源
最近更新 更多