面向用户及其数据的MongoDB数据库设计

面向用户及其数据的MongoDB数据库设计,mongodb,Mongodb,MongoDB和数据库的新功能。我正在尝试用Express和MongoDB制作一个基本的属性应用程序以供练习 我正在寻求一些帮助,寻找解决这个问题的最佳方法 基本上,我的应用程序会有房东和房客。每个房东都会有一堆信息存储的房产。租赁条款、承租人姓名、维护请求、图像等 租户将能够注册,并与他们居住的房产有关联。他们可以提交维护表格等 这是一个好方法吗?所有的东西都应该保存在同一个集合中吗?谢谢 { "_id": "507f1f77bcf86cd799439011", "user": "Co

MongoDB和数据库的新功能。我正在尝试用Express和MongoDB制作一个基本的属性应用程序以供练习

我正在寻求一些帮助,寻找解决这个问题的最佳方法

基本上,我的应用程序会有房东和房客。每个房东都会有一堆信息存储的房产。租赁条款、承租人姓名、维护请求、图像等

租户将能够注册,并与他们居住的房产有关联。他们可以提交维护表格等

这是一个好方法吗?所有的东西都应该保存在同一个集合中吗?谢谢

{
  "_id": "507f1f77bcf86cd799439011",
  "user": "Corey",
  "password": "hashed#PASSWORD",
  "email": "corey@email.com",
  "role": "landlord",
  "properties": [
    {
      "addressId": "1",
      "address": "101 Main Street",
      "tenant": "John Smith",
      "leaseDate": "04/21/2016",
      "notes": "These are my notes about this property.",
      "images": [ "http://www.imagelink.com/image1", "http://www.imagelink.com/image2", "http://www.imagelink.com/image3"]
    },
    {
      "addressId": "2",
      "address": "105 Maple Street",
      "tenant": "John Jones",
      "leaseDate": "01/01/2018",
      "notes": "These are my notes about 105 Maple Ave property.",
      "images": ["http://www.imagelink.com/image1", "http://www.imagelink.com/image2", "http://www.imagelink.com/image3"],
      "forms": [
        {
          "formType": "lease",
          "leaseTerm": "12 months",
          "leaseName": "John Jones",
          "leaseDate": "01/01/2018"
        },
        {
          "formtype": "maintenance",
          "maintenanceNotes": "Need furnace looked at. Doesn't heat properly.",
          "maintenanceName": "John Jones",
          "maintenanceDate": "01/04/2018",
          "status": "resolved"
        },
      ]
    },
    {
      "addressId": "3",
      "address": "110 Chestnut Street",
      "tenant": "John Brown",
      "leaseDate": "07/28/2014",
      "notes": "These are some notes about 110 Chestnut Ave property.",
      "images": [ "http://www.imagelink.com/image1", "http://www.imagelink.com/image2", "http://www.imagelink.com/image3"]
    }
  ]
}

{
  "_id": "507f1f77bcf86cd799439012",
  "user": "John",
  "password": "hashed#PASSWORD",
  "email": "john@email.com",
  "role": "tenant",
  "address": "2",
  "images": [ "http://www.imagelink.com/image1", "http://www.imagelink.com/image2" ]
}

对于这种关系,我建议三个集合房东、物业和租户,每个租户都有一个房东ID和物业ID

这个landordid仅仅是房东的ObjectId,对于属性Id也是如此

如果您计划进行任何类型的汇总报告,或者如果您有房东到物业或房东到租户的多个一对一映射,这将使您的生活更轻松。例如,给定属性的多个属性管理器

这只会使一切变得更简单/更直观,因为您可以简单地在租户的阵列中添加维护请求、租赁条款等内容,并引用任何需要的内容


这提供了最大的灵活性,可以轻松聚合任何类型的报告/查询。

非常有帮助。谢谢。MongoDB是一个基于JSON的nosql存储。我们大多数人都有SQL背景,并且已经习惯于使用关系数据库。如果将关系ism的集合拆分为不同的集合没有问题,那么您必须检查它是否不会弄乱您的数据,因为MonogoDB目前不支持ACID。聚合框架查询和应用程序级数据验证无疑会有所帮助。您可以选择如何分割/构建数据、集合、索引和应用程序级验证。如果您打算用嵌套结构保存json数据,这是绝对好的。