【发布时间】:2018-08-15 04:27:54
【问题描述】:
所以我有以下架构:
var Item_Detail = new Schema(
{
content: {
index: true,
type: Array
},
is_private: {
default: false,
index: true,
type: Boolean
},
order: {
index: true,
required: true,
type: Number
},
table: {
default: {},
type: Object
},
title: {
required: true,
index: true,
type: String,
},
type: {
default: "text",
enum: ["text", "table"],
index: true,
type: String
},
},
{
strict: false
}
)
const Item = new Schema(
{
details: {
default: [],
index: true,
type: [Item_Detail],
},
display_name: {
default: "",
index: true,
type: String,
},
image: {
default: "http://via.placeholder.com/700x500/ffffff/000000/?text=No%20Image&",
type: String
},
is_private: {
default: false,
index: true,
type: Boolean
},
tags: {
index: true,
type: [Tag]
}
},
{
strict: false
}
)
现在,Item_Detail 将成为Item 的子文档,但我不太确定应该如何执行defaults 和type 限制。我也不希望Item_Detail 本身就是一个集合,所以使用create 或save 可能不适合。
【问题讨论】:
-
所以您想在
Item Schema详细信息中引用type和项目详细信息的_id以及defaults数组中的内容? -
@Akrion 默认可以是一个空数组
-
type怎么样,你想在里面有什么?项目架构的交叉引用 ID?如果是这样,那么您只需要添加一个ref -
@Akrion
type只是一个字符串。Item_Details是Item的子文档,它不应该独立存在,即作为一个集合。 -
只将 Item 的
_id放入 Item_Detail... 并使用$lookup聚合来获取它们
标签: javascript mongodb mongoose mongoose-schema