mongoose中引用的ref和数组模式类型之间的差异
创建者:{ 类型:Schema.ObjectId, 参考:“用户” } }) 创建者:[用户模式] 这两行代码之间有什么区别。(为了让事情更容易解释,我将调用mongoose中引用的ref和数组模式类型之间的差异,mongoose,Mongoose,创建者:{ 类型:Schema.ObjectId, 参考:“用户” } }) 创建者:[用户模式] 这两行代码之间有什么区别。(为了让事情更容易解释,我将调用creator是,Blog属性的模型) 这声明了一个creator属性,该属性存储对用户文档的引用(基本上是ObjectId)。这有点像SQL中的外键 当您在博客模型上执行查询时,您可以告诉Mongoose使用自动加载引用的文档。这是必要的,因为用户文档存储在单独的集合中(在这方面,它们是独立的) 这声明了一个creator属性,用于存储用
creator
是,Blog
属性的模型)
这声明了一个creator
属性,该属性存储对用户
文档的引用(基本上是ObjectId
)。这有点像SQL中的外键
当您在博客
模型上执行查询时,您可以告诉Mongoose使用自动加载引用的文档。这是必要的,因为用户
文档存储在单独的集合中(在这方面,它们是独立的)
这声明了一个creator
属性,用于存储用户列表。这些用户有自己的Mongoose模式(用于验证),但主要区别在于它们不存储在单独的集合中;换句话说,每个用户
文档只存储在博客
文档的创建者
数组中(Mongoose调用这些)
这要快一些,因为要加载特定的博客
文档,您只需执行一个查询(而不是一个查询用于博客
文档,如果您要使用population,则另一个查询用于用户
文档),但灵活性较低,取决于数组的大小(您将要存储的用户数)您可能会遇到某些MongoDB限制。(为了让事情更容易解释,我将调用creator
是,Blog
属性的模型)
这声明了一个creator
属性,用于存储对用户
文档的引用(基本上是ObjectId
),有点像SQL中的外键
当您在博客
模型上执行查询时,您可以告诉Mongoose使用自动加载引用的文档。这是必要的,因为用户
文档存储在单独的集合中(在这方面,它们是独立的)
这声明了一个creator
属性,该属性存储用户列表。这些用户有自己的Mongoose模式(用于验证),但主要区别在于它们不存储在单独的集合中;换句话说,每个用户
文档只存储在博客
文档的创建者
数组中(Mongoose称其为)
这要快一些,因为要加载特定的
博客
文档,您只需执行一个查询(而不是一个查询用于博客
文档,如果您要使用population,则另一个查询用于用户
文档),但灵活性较低,取决于数组的大小(您将要存储的用户数)您可能会遇到某些MongoDB限制。因此,如果用户架构有一个名为skill的属性,并且我想查询创建者架构以填充由具有特定技能的用户创建的所有帖子,我可以写:post.find({user.skill:query})。填充('post').exec(err,function())。如果是,则两行代码中哪一行最适合这样做。@dtytomi使用第一种方法时,需要使用populate()的属性
查找由具有特定技能的用户创建的帖子。对于子文档,您可以直接查询。一种方法不一定比另一种好,这取决于具体的用例。因此,如果用户架构具有名为skill的属性,并且我想查询创建者架构,以使用特定的n skill我可以写:post.find({user.skill:query}).populate('post').exec(err,function())。如果是,那么两行代码中哪一行最适合这样做。@dtytomi在使用第一个方法时,需要使用populate()的属性
查找由具有特定技能的用户创建的帖子。对于子文档,您可以直接查询。一种方法不一定比另一种好,它取决于具体的用例。
creator: { type: Schema.ObjectId, ref: 'User' } }
creator: [UserSchema]