node.js - 如何为子文档创建 mongoDb 架构
问题描述
我有如下文件。这里peoples
包含指向用户集合的 ObjectId 数组。并且contribution
字段包含与字段一样多的子文档peoples
。长度是可变的,例如如果某个组中有 2 个 ObjectId,people
那么contribution
将有 2 个子文档。我需要为此创建 mongoDb 架构,请告诉我架构。
{
name: "person name",
_id: ObjectId(""),
creater: ObjectId("1"), //referencing to user collection
peoples: [ObjectId("1"), ObjectId("2"),...upto n], //all referencing to user table
contribution: {
ObjectId("1"):{
paid: 1200,
due: 1000,
prevDue: 200,
Advance: 0
},
ObjectId("2"):{
paid: 1200,
due: 1000,
prevDue: 200,
Advance: 0
},
//upto end of lists in peoples array
},
estimated: 30000,
collected: 15379,
left: 14721
}
解决方案
您只需要在 main 中引用嵌套模式schema
。例如:
let user = new Schema({
name: String
})
let schema = new Schema({
followers: [user]
})
在 的followers
字段中schema
,您刚刚引用了user
架构。每当完成这种引用时,nested schema
就会将类型注入到引用点中。
推荐阅读
- compare - 如何删除 Shopify 中的添加到比较按钮(PORTO 主题)
- php - HTML Template PHP get Header() - 如何获取其内容?
- c++ - 从枚举编译时间函数?
- reactjs - Typescript 和 React:使用解构的事件处理程序的正确类型是什么?
- python - 根据关键字有条件地 grep 和连接 CSV 中的行
- java - 1 引用没有可用的子 com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为类型
- arrays - 从结构指针的排序数组构建二叉搜索树
- python - 如何在字典中插入另一级键?
- python - SageMath:为什么 sagemath 在 TypeErrors 的情况下不给出行号?有没有办法追踪实际的行号?
- javascript - Promise.all 得到最慢的解决承诺