Home > Enterprise >  How to structure these requirements? (microservices)
How to structure these requirements? (microservices)

Time:01-13

I have a customer microservice (customer document) and a bank account microservice (bank account document). How do I structure these requirements?

There are two types of clients: personal and business.

  • A personal client can only have a maximum of one savings account, one checking account or fixed term accounts.

  • A business client may not have one savings or fixed-term account but may have multiple checking accounts.

In the customers document I have an ID attribute that identifies the bank account and that could fulfill the first requirement, however, the second one indicates that you can have multiple checking accounts if it is a business type.

CodePudding user response:

db

db={
  "clients": [
    {
      "_id": 1,
      "type": "personal",
      "name": "Tom",
      "createAt": ISODate("2022-01-10T11:23:25.184Z")
    },
    {
      "_id": 2,
      "type": "business",
      "name": "Apple",
      "createAt": ISODate("2022-01-12T05:10:42.220Z")
    }
  ],
  "accounts": [
    {
      "_id": 1,
      "client_id": 1,
      "type": "saving",
      "money": 12000
    },
    {
      "_id": 2,
      "client_id": 1,
      "type": "checking",
      "money": 8000
    },
    {
      "_id": 3,
      "client_id": 2,
      "type": "checking",
      "money": 6000
    },
    {
      "_id": 4,
      "client_id": 2,
      "type": "checking",
      "money": 7000
    }
  ]
}

aggregate

db.clients.aggregate([
  {
    "$lookup": {
      "from": "accounts",
      "localField": "_id",
      "foreignField": "client_id",
      "as": "account_docs"
    }
  }
])

mongoplayground

  •  Tags:  
  • Related