【问题标题】:Exclude specific fields in all nested document in mongoose query在猫鼬查询中排除所有嵌套文档中的特定字段
【发布时间】:2022-09-24 21:12:54
【问题描述】:

我有一个收藏与旅行作为一个领域,旅行是键不同的映射.我想查询集合但在每次旅行中排除乘客字段

const ride = new Schema(
    {
        boat_operator: {
            type: Schema.Types.ObjectId,
            required: true,
            ref: \'User\'
        },
        trips: {
            type: Map,
            of: {
                passengers: [{ type: Schema.Types.ObjectId, ref: \'User\' }],
                available_seats: { type: Number, required: true }
            },
            default: new Map()
        }  
    }
    )

我试过这个

const rides = await Ride.find({ status: \'waiting\' }).select(\"-trips.*.passengers\")

我试图选择所有项目价值然后删除每个中相应的乘客字段

它没有效果

这就是响应的样子

[
    {
        \"_id\": \"632a1669279c86f4ab3a4bf5\",
        \"boat_operator\": \"6328c434a98212a7f57c4edc\",
        \"trips\": {
            \"2019\": {
                \"passengers\": [],
                \"available_seats\": 5,
                \"_id\": \"632a1669279c86f4ab3a4bfe\"
            },
            \"2020\": {
                \"passengers\": [],
                \"available_seats\": 5,
                \"_id\": \"632a1669279c86f4ab3a4bfc\"
            },
            \"2021\": {
                \"passengers\": [],
                \"available_seats\": 5,
                \"_id\": \"632a1669279c86f4ab3a4bfa\"
            },
            \"2022\": {
                \"passengers\": [],
                \"available_seats\": 5,
                \"_id\": \"632a1669279c86f4ab3a4bf8\"
            }
        }
    }
]

我想在返回的文档中排除乘客字段

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    这将解决它

    const rides = await Ride.aggregate([
      { "$match": { "status": "waiting" } },
      { $project: { "trips": { $objectToArray: '$trips' } } },
      { $project: { 'trips.v.passengers': 0 } },
      { $project: { "trips": { $arrayToObject: '$trips' } } }
    ]);
    

    这是退回的文件

    {
      "_id": "632a1669279c86f4ab3a4bf5",
      "trips": {
        "2019": {
          "available_seats": 5,
          "_id": "632a1669279c86f4ab3a4bfe"
        },
        "2020": {
          "available_seats": 5,
          "_id": "632a1669279c86f4ab3a4bfc"
        },
        "2021": {
          "available_seats": 5,
          "_id": "632a1669279c86f4ab3a4bfa"
        },
        "2022": {
          "available_seats": 5,
          "_id": "632a1669279c86f4ab3a4bf8"
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2016-03-24
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多