首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MongoDB使用NestJS在没有不需要的数据的情况下获取查询

使用MongoDB使用NestJS在没有不需要的数据的情况下获取查询
EN

Stack Overflow用户
提问于 2020-11-21 08:06:53
回答 1查看 66关注 0票数 1
代码语言:javascript
复制
{
    "_id": {
        "$oid": "5f244a0c9b20935b3bdc2cd9"
    },
    "user": {
        "rid": "5f12ba968ca0084ee7f7ea9b",
        "name": "",
        "phone": “0123456789”
    },
    "clazz": “Test”,
    "enrolment_history": [{
        "_id": {
            "$oid": "5f245e2f1906715c9e52d675"
        },
        "start_from": {
            "$date": "2020-06-30T18:30:00.000Z"
        },
        "expires_in": {
            "$date": "2020-07-31T18:30:00.000Z"
        },
        "enrollment_date": {
            "$date": "2020-06-30T18:30:00.000Z"
        },
        "payment_method": "Free",
        "status": "SUCCESS",
        "clazz_transaction": "5f3e74f8d26e962003103c11",
        "month": "2020-6"
    }, {
        "_id": {
            "$oid": "5f3e790c1e3c741f9eb6e53b"
        },
        "start_from": {
            "$date": "2020-07-31T18:30:00.000Z"
        },
        "expires_in": {
            "$date": "2020-08-31T18:30:00.000Z"
        },
        "enrollment_date": {
            "$date": "2020-07-31T18:30:00.000Z"
        },
        "payment_method": "Free",
        "status": "SUCCESS",
        "clazz_transaction": "5f3e790c1e3c741f9eb6e53a",
        "month": "2020-7"
    }, {
        "_id": {
            "$oid": "5f5763bfc2464554c15a2b28"
        },
        "start_from": {
            "$date": "2020-08-31T18:30:00.000Z"
        },
        "expires_in": {
            "$date": "2020-09-30T18:30:00.000Z"
        },
        "enrollment_date": {
            "$date": "2020-09-08T10:58:07.333Z"
        },
        "payment_method": "Free",
        "status": "SUCCESS",
        "clazz_transaction": "5f5763bfc2464554c15a2b27",
        "month": "2020-8"
    }
}

我有这样的文档列表,所以我需要使用下面的过滤器来获取这个文档

代码语言:javascript
复制
{"phone":"0123456789","enrolment_history.month":"2020-6"}

输出=> (删除enrolment_history数组中的其他数据)

代码语言:javascript
复制
{
    "_id": {
        "$oid": "5f244a0c9b20935b3bdc2cd9"
    },
    "user": {
        "rid": "5f12ba968ca0084ee7f7ea9b",
        "name": "",
        "phone": “0123456789”
    },
    "clazz": “Test”,
    "enrolment_history": [{
        "_id": {
            "$oid": "5f245e2f1906715c9e52d675"
        },
        "start_from": {
            "$date": "2020-06-30T18:30:00.000Z"
        },
        "expires_in": {
            "$date": "2020-07-31T18:30:00.000Z"
        },
        "enrollment_date": {
            "$date": "2020-06-30T18:30:00.000Z"
        },
        "payment_method": "Free",
        "status": "SUCCESS",
        "clazz_transaction": "5f3e74f8d26e962003103c11",
        "month": "2020-6"
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-21 08:15:05

你可以使用aggregate()方法,

  • $match根据您的条件筛选文档
  • $set使用$filter进行过滤
代码语言:javascript
复制
ModelName.aggregate([
  {
    $match: {
      "user.phone": "0123456789",
      "enrolment_history.month": "2020-6"
    }
  },
  {
    $set: {
      "enrolment_history": {
        $filter: {
          input: "$enrolment_history",
          cond: { $eq: ["$$this.month", "2020-6"] }
        }
      }
    }
  }
])

游乐场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64940988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档